본문 바로가기

코딩테스트/문제

9. Palindrome Number

난이도 쉬움

 

문제

Given an integer x, return true if x is palindrome integer.

An integer is a palindrome when it reads the same backward as forward.

  • For example, 121 is a palindrome while 123 is not.

Example 1:

Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.

Example 2:

Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

 

풀이

class Solution {
        public boolean isPalindrome(int x) {
            String before = String.valueOf(x);
            boolean answer;

            // reverse
            StringBuffer sb = new StringBuffer(before);
            String reversedStr = sb.reverse().toString();

            System.out.println("before: "+sb+" /next: "+reversedStr);

            if(before.equals(reversedStr)){
                answer = true;
                return answer;
            } else {
                answer = false;
                return answer;
            }
        }
}

 

가장 먼저 떠오른 것은 정수를 뒤집어서 값을 비교하는 방법이였고 두번째는 정수를 문자열로 변경해서 뒤집은 다음에 두개의 값을 비교하는 방법이였다.

좀 더 쉬운접근을 하기위해 문자열로 변경 후 비교하는 방법을 채택했다.

 

아래는 정수로 값을 비교하는 방법이다.

정답은 없다지만 나는 이 방법이 좀 더 정답에 가깝다고 생각한다.

class Solution{
       public boolean isPalindrome(int num){
            if(num < 0) return  false;
            int reversed = 0, remainder, original = num;
            while(num != 0) {
                remainder = num % 10; // num의 끝자리 저장
                System.out.println("remiander: "+remainder);
                reversed = reversed * 10 + remainder; //reversed의 자리수 뒤에 remainder가 가지고 있는 수 붙여준다.
                System.out.println("reversed: "+reversed);
                num  /= 10;  //10으로 나누고 마지막숫자 제거
                System.out.println("num: "+num);
            }
            return original == reversed;
        }

}

 

 

'코딩테스트 > 문제' 카테고리의 다른 글

20. Valid Parentheses  (0) 2022.05.28