이번에는 백준 10988번 팰린드롬인지 확인하기 문제를 풀어보았습니다.
이 문제는 문자열이 앞에서 읽을 때와 뒤에서 읽을 때 같은지를 확인하는 문제입니다.
알파벳 소문자로만 이루어진 단어가 주어집니다.
이 단어가 팰린드롬이면 1, 아니면 0을 출력하면 됩니다.
예를 들어
levelnoon은 팰린드롬이고,
baekjoononlinejudge는 팰린드롬이 아닙니다.
이 문제는 문자열을 뒤집은 뒤, 원래 문자열과 같은지만 비교하면 됩니다.
즉,
1, 다르면 0을 출력하는 방식으로 해결할 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
string compare = s;
reverse(s.begin(), s.end());
if (compare == s) {
cout << 1 << endl;
} else {
cout << 0 << endl;
}
return 0;
}
s를 입력받는다.compare에 저장해둔다.reverse()를 사용해 s를 뒤집는다.1, 다르면 0을 출력한다.이 풀이의 핵심은 문자열을 뒤집어서 비교하는 것입니다.
C++에서는 reverse()를 사용하면 문자열을 쉽게 뒤집을 수 있기 때문에,
굳이 직접 앞뒤 인덱스를 비교하는 방식으로 구현하지 않아도 간단하게 해결할 수 있습니다.
이 문제는 결국 원래 문자열과 뒤집은 문자열을 비교하는 문제라고 볼 수 있습니다.