Coding/BOJ
[BOJ 백준] 1259 - 팰린드롬수 (C++)
Dev_Klare
2023. 11. 17. 21:23
문제 바로가기
https://www.acmicpc.net/problem/1259
1259번: 팰린드롬수
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.
www.acmicpc.net
관련 알고리즘
- 팰린드롬
정답 및 해설
앞뒤 어디로 읽어도 같은 단어를 팰린드롬이라 한다.
한글로는 '기러기', '스위스', '토마토' 등이, 영어로는 'level', 'eye', 'mom' 등이 팰린드롬이다.
위 문제는 숫자로 팰린드롬을 판단하는 문제인데, 문자열의 팰린드롬처럼 다루어도 좋지만
이번 문제에서는 정수를 이용한 팰린드롬 문제인 만큼 정수로 계산하도록 하겠습니다.
입력받은 정수를 일의 자리부터 역순으로 재배열하여 두 수가 같은지 비교하여 팰린드롬인지 판단합니다.
C++
더보기
#include<bits/stdc++.h>
using namespace std;
int main(){
int num,n1,n2;
while(1){
n2=0;
cin>>num;
if(num==0) break;
n1=num;
while(n1>0){
n2*=10;
n2+=n1%10;
n1/=10;
}
if(n2==num) cout<<"yes\n";
else cout<<"no\n";
}
}
Line | 해설 |
4 | int num : 입력받은 정수 int n1, n2 : 팰린드롬인지 판별하기 위해 사용할 정수 |
5 | while(1) 구문으로 무한루프에 진입 |
6~9 | 변수 n2를 0으로 초기화합니다. (이유는 Line 10~14에서 설명) 정수 num을 입력받고 if 조건문으로 num==0 이라면 break 문으로 반복을 종료하고 프로그램 종료 아니라면 n1에 num을 대입하고 다음 코드로 이동합니다. |
10~14 | n1이 0보다 크면 n2*=10, n2+=n1%10, n1/=10 구문을 반복합니다. 위 코드를 통하여 n1을 일의 자리부터 역순으로 재배치합니다. ex) n1=102, n2=0 → n1=10, n2=2 → n1=1, n2=20 → n1=0, n2=201 |
15~16 | n1을 재배치한 n2와 처음 입력받은 num을 비교하여 같다면 yes 다르면 no를 출력합니다. |