[백준] 1259번 팰린드롬수 / C++
#문제
#풀이
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector<string> ans;
int main()
{
ios::sync_with_stdio(false); cin.tie(NULL);
int x;
while (true)
{
cin >> x;
if (x == 0)
{
break;
}
string x_string = to_string(x);
bool result = false;
int i = 0;
int j = x_string.size() - 1;
while (i <= j)
{
if (x_string[i] == x_string[j])
{
result = true;
i++;
j--;
}
else
{
result = false;
break;
}
}
if (result == true)
{
ans.push_back("yes");
}
else
{
ans.push_back("no");
}
}
for (int i = 0; i < ans.size(); ++i)
{
cout << ans[i] << '\n';
}
return 0;
}
#정리
앞에서 읽어도 우영우, 뒤에서부터 읽어도 우영우같이 앞부터 읽나, 뒤부터 읽나 똑같은 단어를 팰린드롬이라고 한다. 이 문제에서는 단어가 아닌 숫자를 입력받는다. ‘0’이 주어질 때까지 입력을 받는다고 했으니, while 문을 사용하여 반복하고, 0을 입력 받았을 때 break를 사용해 반복문에서 빠져나가도록 만들고, 비교를 위해 입력받은 숫자를 string으로 캐스팅했다. 문자의 앞을 가리키는 i와 뒤를 가리키는 j를 지정하고, i가 j를 넘기지 않을 때까지 비교한다. 그리고 조건을 모두 만족할 경우 ‘yes’, 불만족시 ‘no’를 출력하도록 만들었다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: