1~99999 사이의 숫자가 주어지고,
앞뒤가 똑같은 번호라면 팰린드롬수라 하고 입력받을 시 yes, 이외에는 no를 출력하는 코드를 짜면 된다.
나는 간편하게 바로 string 형으로 받고 맨 앞과 맨 뒤부터 시작해 한 칸씩 좁혀가며 문자가 일치하는지 검수해줬다.
물론 앞의 절반과 뒤의 절반을 짝지어서 자릿수/2 번으로 검수 횟수를 줄일 수 있겠지만, 사소하게 조정하기 귀찮아서 모든 자리에 대해 2번씩 검수되고 있다. 그러나 이정도 규모의 문제라면 유의미한 차이가 없어보여서 그냥 했다.
주의해야 할 점은 string형 변수
string str = 12345 이라고 한다면 맨 앞 문자는 1이지만, string 의 특성상 맨 뒷 문자는 \0 인 것을 생각해서
맨 앞과 맨 뒤 숫자는 str[0] 과 str[str.length() -1] 이 됨을 생각하며 코드를 작성해야 한다.
#https://itre.tistory.com/
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string number;
int k;
while (1)
{
k = 0;
cin >> number;
if (number == "0")
break;
for (int i = 0; i < number.length(); i++)
{
// cout << "i : " << i << endl;
// cout << "number.length() : " << number.length() << endl;
// cout << "number[i] : " << number[i] << endl;
// cout << "number[number.length() - i] : " << number[number.length() - (i+1)] << endl;
if (number[i] == number[number.length() - (i + 1)])
k++;
// cout << "k : " << k << endl;
}
if (k == number.length())
cout << "yes" << endl;
else
cout << "no" << endl;
}
}
'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글
백준 1181번 단어 정렬 C++ 문제 풀이 (0) | 2024.01.20 |
---|---|
백준 1018번 체스판 다시 칠하기 C++ 문제풀이 (0) | 2024.01.20 |
댓글