백준 1259번 (팰린드롬수, C++) [BAEKJOON]

팰린드롬수

https://www.acmicpc.net/problem/1259

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초128 MB36878212591877358.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번

  • 문제를 번역한 사람: kks227

알고리즘 분류


통과된 코드

#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;
}

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤