문제


어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다.

수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자.

 

준비물


string - 한 자릿수씩 받아놓으면 비교하기 편리하다

코드


#include <iostream>
#include <string>

using namespace std;
 
void Solution(){
    string palindrome;
    bool isPalin;

    while(true){
        cin >> palindrome;
        isPalin = true;

        if(palindrome.compare("0") == 0) break;

        for(int i = 0; i < palindrome.length()/2; i++){
            if(palindrome[i] != palindrome[palindrome.length()- 1 - i]) isPalin = false;
        }

        if(isPalin) cout << "yes\n";
        else cout << "no\n";
    }

}

int main(){
    Solution();

    return 0;
}

풀이


1. string형인 palindrome에 한 자리씩 입력받는다

2-1. palindrome에 0이 입력되면 실행을 끝낸다

2-2. palindrome의 앞 부분(i)과 뒷 부분(lenght()-1-i)을 비교하면서 palindrome길이의 반 만큼(소수점X) 조회한다

3. 만약 앞과 뒤가 다른 문자라면 팰린드롬수가 아니므로 isPalin에 false를 한다 isPalin의 초기값은 true다

4. isPalin에 따라 yes, 또는 no를 출력한다 

 

TML


프로그래밍에 입문할 때 c언어를 이용해서 그런지 string자료형을 사용할 때마다 편리함에 희열을 느낀다

 

string이 최고다..  

'프로그래밍 문제집 > 백준' 카테고리의 다른 글

1260번-DFS와 BFS  (0) 2022.01.29
1003번-피보나치 함수  (0) 2022.01.26
1181번-단어 정렬  (0) 2022.01.24
1018번-체스판 다시 칠하기  (0) 2022.01.24
1157번-단어 공부  (0) 2022.01.22

+ Recent posts