난이도 쉬움
문제
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 |
|---|