(C++) 백준 1259 - 팰린드롬수

코딩너구리·2025년 9월 27일

코딩 문제 풀이

목록 보기
2/266

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

팰린드롬이란?

어떤 단어를 뒤에서부터 읽어도 똑같은 단어를 팰린드롬이라고 한다.
ex) 'radar', 'sees'

문제

각 입력마다 1이상 99,999 이하의 정수가 주어진다.
마지막 입력은 0이 주어지며 문제에 포함되지 않는다.
입력받은 수가 팰린드롬수이면 'yes', 아니면 'no' 출력한다.

접근

while(1)로 문자열 입력 받다 "0"입력시 종료한다.
입력받은 문자열을 i < 문자열길이 -1 - i 조건으로 반복하며 해당 인덱스에 문자열 값 비교한다.
다른 값이 비교되면 "no"출력하며 종료하고 그렇지 않으면 "yes"출력하며 종료한다.

코드

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
 
	string s;
 
	while (1)
	{
		bool t = true;
		int i = 0;
		cin >> s;
		if (s == "0")
			break;
		int slen = s.length() - 1;
		while (i < (slen - i))
		{
			if (s[i] != s[slen - i])
			{
				t = false;
				cout << "no" << '\n';
				break;
			}
			i++;
		}
 
		if (t)			
			cout << "yes" << '\n';
	}
}

후기
반복문의 범위에 s.length() - i를 주어 원하던 값이 나오지않았다.
s.length() - 1 - i로 수정하니 해결되었다.
0부터 시작했기에 인덱스는 -1 까지라는걸 잊지말자.

0개의 댓글