Algorithm Trainning/백준 알고리즘(BEAKJOON)
백준 : 3062번, 수 뒤집기
newbie22
2021. 3. 15. 22:48
문제 주소 : www.acmicpc.net/problem/3062
정답 비율 : 52.877% (2021.03.15 22:30 기준)
3062번: 수 뒤집기
수 124를 뒤집으면 421이 되고 이 두 수를 합하면 545가 된다. 124와 같이 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이 되는지 테스트 하는 프로그램을 작성하시오.
www.acmicpc.net
문제 조건 :
입력 : T개의 숫자 K 가 주어집니다. (K : 0 ~ 100000)
출력 : 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이면 YES, 아닐 경우 NO을 출력합니다.
시간 : 1 초
문제 풀이 :
바쁘다 보니 머리 식힐 겸에 쉬운 문제를 풀어보았습니다. 아이디어는 입력이 숫자이므로 원래 숫자와 뒤집은 숫자가 같으면 이는 좌우 대칭을 의미하므로 별도로 배열을 생성하여 확인하는 과정이 필요 없습니다.
(팰린드롬 문제들을 주로 문자열로 풀다 보니 배열로 접근하다가 중간에 test 출력하다가 떠오른 생각이었습니다. ㅎㅎ)
코드는 다음과 같습니다.
C99
//solve 3062
#include<stdio.h>
int main(void)
{
int tc, i;
scanf("%d", &tc);
for(i = 0; i < tc; i++)
{
int num, tmp = -1, reverse = 0;
scanf("%d", &num);
//--- make num reverse number ---//
tmp = num;
for(tmp = num; tmp ; tmp /= 10)
reverse = (reverse + tmp % 10) * (tmp > 9 ? 10 : 1);
num += reverse;
reverse = 0;
//--- make sum + reverse reverse number ---//
tmp = num;
for(tmp = num; tmp; tmp /= 10)
reverse = (reverse + tmp % 10) * (tmp > 9 ? 10 : 1);
printf("%s\n", num == reverse ? "YES" : "NO");
}
return 0;
}