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 까지라는걸 잊지말자.