본문 바로가기

PS_Baekjoon

[백준 C++] 1259번 : 팰린드롬수

 

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

 

1259번: 팰린드롬수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

www.acmicpc.net

풀이 : 

1. 앞으로 읽으나 뒤로 읽으나 같아야 하기 때문에 절반까지만 반복문을 돌리면서 비교한다

2. 쉽게 비교하기 위해 문자열로 받는다

3. 반복문을 종료하는 시점은 들어온 값이 0인 경우

#include <iostream>

using namespace std;

int main(){
    bool ans;

    while(1){
        string num;
        ans = true;

        cin >> num;
        if(num.size() == 1 && num[0] == '0'){
            return (0);
        }
        for(int i=0; i<num.size()/2; i++){
            if(num[i] != num[num.size()-i-1]){
                ans = false;
            }
        }
        (ans ? cout << "yes" : cout << "no");
        cout << endl;
    }
}

-  값이 일치하는지를 판별하는 bool ans선언

- while문 무한으로 돌리면서 0 나오면 종료

- 절반까지만 for문을 돌리면서 i값과 끝값 비교

- 일치 여부에 따라 값 출력