팰린드롬수
https://www.acmicpc.net/problem/1259
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 36878 | 21259 | 18773 | 58.043% |
문제
어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. ‘radar’, ‘sees’는 팰린드롬이다.
수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다.
121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다.
또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만,
특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다.
입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.
출력
각 줄마다 주어진 수가 팰린드롬수면 ‘yes’, 아니면 ‘no’를 출력한다.
예제 입력 1
121 1231 12421 0
예제 출력 1
yes no yes
출처
ICPC > Regionals > South Pacific > South Pacific Region > New Zealand Programming Contest > NZPC 2006 B번
알고리즘 분류
통과된 코드
#include <iostream> #include <list> using namespace std; string answer[2] = { "yes", "no" }; list<string> answerList; int temp; int main() { string str = ""; while (true) { // 계속 반복 cin >> str; if (str == "0") break; // 0을 입력 받으면 stop temp = 0; for (int i = 0; i < str.length()/2; i++) { // 홀수일 경우 가운데는 의미가 없음 if (str[i] != str[str.length() -1 - i]) { temp = 1; } } answerList.push_back(answer[temp]); // 리스트에 답을 넣는다 } // 리스트를 순회하면서 출력 for (auto it = answerList.begin(); it != answerList.end(); it++) { cout << *it << "\n"; } return 0; }