[백준 1259] 팰린드롬수
백준 1259번 - 팰린드롬수
❓ 문제
어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. ‘radar’, ‘sees’는 팰린드롬이다.
수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자.
✏️ 풀이
결국 앞 뒤가 똑같은 전화번호수를 구하는 것이다.
문제를 보자마자 string으로 받아서 reverse 시키면 되겠다! 라고 생각하였다.
algorithm library
에 reverse
를 이용하면 쉽게 풀 수 있다.
풀이의 핵심은 아래와 같다.
- input을 convert int to string (to_string 사용)
reverse(reverse_string.begin(), reverse_string.end())
로 앞 뒤 바꾸기- original string과 비교
아래는 정답 코드이다!
✔️ 정답 코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<string> answer;
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
while(1) {
int temp;
string original_string;
string reverse_string;
cin >> temp;
if (temp ==0)
break;
original_string = to_string(temp);
reverse_string = to_string(temp);
reverse(reverse_string.begin(), reverse_string.end());
if (original_string.compare(reverse_string) == 0)
answer.push_back("yes");
else
answer.push_back("no");
}
vector<string>::iterator it;
for (it=answer.begin(); it!=answer.end(); it++) {
cout << *it << "\n";
}
return 0;
}
Leave a comment