문제
어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. '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 |