LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "Palindrome Number" 문제입니다.
--> https://leetcode.com/problems/palindrome-number/description/
문제 :
Given an integer x, return true if x is a palindrome, and false otherwise.
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.
Example 3 :
Input : x = 10
Output : false
Explanation : Reads 01 from right to left. Therefore it is not a palindrome.
Constraints : $-2^{31} \leq x \leq 2^{31} - 1$
Follow up : Could you solve it without converting the integer to a string ?
이 문제는 정수 x가 주어졌을 때, x가 회문이면 true를 반환하고, 그렇지 않으면 false를 반환하라는 문제입니다.
저는 제일 첫 번째로 든 생각이 int를 string으로 변환시킨 후에 palindrome (회문) 인지 아닌 지 를 확인하는 코드를 떠올렸었는데, Follow-up에 쓰여있듯이, 이 방법을 제외한 방법을 구현하라고 해서 곰곰이 생각해 봤습니다.
그렇게 해서 얻은 방법이 이 코드입니다 :
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) return false;
int original = x;
int reversed = 0;
while (x != 0) {
int digit = x % 10;
reversed = reversed * 10 + digit;
x /= 10;
}
return original == reversed;
}
}
우선, x가 음수 일때는, Example 2를 참고하면 알 수 있듯이, 회문이 될 수 없기 때문에 바로 false를 리턴합니다.
그리고 reversed라는 새로운 변수를 만들고 해당 변수가 x의 거울버전(?)을 저장할 수 있게끔 코드를 짜줍니다.
마지막으로 reversed와 original (x)이 같은지 아닌 지를 확인하면 코드는 마무리됩니다.
추가적으로, 만약에 int를 string으로 바꿔서 할 수 있었으면 어땠을까요 ?
class Solution {
public boolean isPalindrome(int x) {
// 음수는 회문이 될 수 없음
if (x < 0) return false;
// 정수를 문자열로 변환
String str = Integer.toString(x);
// 문자열을 뒤집기
String reversedStr = new StringBuilder(str).reverse().toString();
// 원래 문자열과 뒤집힌 문자열이 같은지 비교
return str.equals(reversedStr);
}
}
이렇게 초간단 코드를 짤 수 있습니다. 굳이 설명을 안 해도 바로 이해가 가지는 코드입니다.
'LeetCode' 카테고리의 다른 글
[LeetCode] - 28. Find the Index of the First Occurrence in a String (0) | 2024.07.19 |
---|---|
[LeetCode] - 27. Remove Element (2) | 2024.07.19 |
[LeetCode] - 1. Two Sum (0) | 2024.07.18 |
[LeetCode] - 231. Power of Two (0) | 2024.07.17 |
[LeetCode] - 191. Number of 1 Bits (0) | 2024.07.17 |