문제 링크
1. 문제 풀이
정수 $x$ 에 대해 팰린드롬이면 true 아니면 false를 반환하는 문제다. 팰린드롬은 앞에서부터 읽었을 때랑 뒤에서부터 읽었을 때 모두 동일한 문자열로 정수 $x$ 를 문자열로 변환하고 이를 뒤집는 함수를 통해 원본 문자열과 뒤집힌 문자열이 동일한지 여부로 판단해도 되고, $x$ 의 각 자릿수를 저장한 배열을 만들고 배열의 양 끝에서부터 중간까지 각 자리 숫자가 전부 동일한지 판단해도 된다. 또는 $x$ 를 문자열로 받고 양 끝부터 각 문자가 동일한지 비교해봐도 된다.
2. 코드
1. 문자열 [Java]
1
2
3
4
5
6
7
8
| class Solution {
public boolean isPalindrome(int x) {
String str = String.valueOf(x);
String revStr = new StringBuilder(str).reverse().toString();
return str.equals(revStr);
}
}
|
2. 문자열 [Java]
1
2
3
4
5
6
7
8
9
10
11
| class Solution {
public boolean isPalindrome(int x) {
String str = String.valueOf(x);
for (int i = 0; i < str.length() / 2; i++) {
if (str.charAt(i) != str.charAt(str.length() - 1 - i)) return false;
}
return true;
}
}
|
3. 수학 [Java]
$x$ 가 음수면 앞에 마이너스 부호가 있어서 먼저 가치지기를 해줬다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| class Solution {
public boolean isPalindrome(int x) {
if (x < 0) return false;
int[] arr = new int[32];
int len = 0;
while (x > 0) {
arr[len++] = x % 10;
x /= 10;
}
for (int i = 0; i < len / 2; i++) {
if (arr[i] != arr[len - 1 - i]) return false;
}
return true;
}
}
|
4. 문자열 [C++]
1
2
3
4
5
6
7
| class Solution {
public:
bool isPalindrome(int x) {
string s = to_string(x);
return s == string(s.rbegin(), s.rend());
}
};
|
5. 문자열 [C++]
1
2
3
4
5
6
7
8
9
10
11
12
| class Solution {
public:
bool isPalindrome(int x) {
string s = to_string(x);
for (int i = 0; i < s.size() / 2; i++) {
if (s[i] != s[s.size() - 1 - i]) return false;
}
return true;
}
};
|
6. 수학 [C++]
$x$ 가 음수면 앞에 마이너스 부호가 있어서 먼저 가치지기를 해줬다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
vector<int> v;
while (x > 0) {
v.push_back(x % 10);
x /= 10;
}
int len = v.size();
for (int i = 0; i < len / 2; i++) {
if (v[i] != v[len - 1 - i]) return false;
}
return true;
}
};
|