문제 링크: https://www.acmicpc.net/problem/1259

 

팰린드롬수는 뒤에서부터 읽어도 똑같은 수를 말하는데요, 풀이 방법이 여러가지 있겠습니다만 떠올릴 수 있는 방법 중 가장 쉬운건 앞에서부터 한글자씩 체크해보는 겁니다.

길이의 딱 절반만큼만 비교해보면 되겠죠. 숫자의 길이가 홀수일 때 가장 중앙의 수는 뭐가 와도 상관 없으니 결과적으로는 for문에서 i의 범위가 [0, sz/2)가 되면 되겠습니다. i번째 수와 비교할 수는 sz-i-i입니다.

// 1259

#pragma GCC optimize ("Ofast")

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;



int main()
{
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
#endif
	
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	
	string num;
	while (cin >> num) {
		if (num == "0") break;

		bool flag = true;
		auto sz = num.size();
		for (int i = 0; i < sz/2 && flag; ++i) {
			if (num[i] != num[sz - i - 1])
				flag = false;
		}

		cout << (flag ? "yes\n" : "no\n");
	}

	return 0;
}
반응형