Algorithm/BOJ
백준 3062번 C++
poopooreum
2023. 8. 17. 13:25
반응형
백준 3062번 수 뒤집기
https://www.acmicpc.net/problem/3062
3062번: 수 뒤집기
수 124를 뒤집으면 421이 되고 이 두 수를 합하면 545가 된다. 124와 같이 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이 되는지 테스트 하는 프로그램을 작성하시오.
www.acmicpc.net


정답 코드
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char a[8];
char b[8] = { 0, };
char c[8] = { 0, };
char d[8] = { 0, };
int n;
cin >> n;
int index=0;
for (int x = 0; x < n; x++) {
cin >> a;
strcpy(b, a);
for (int x = 0; x < strlen(a) / 2; x++)
swap(a[x], a[strlen(a) - x - 1]);
int flag = 0, sum = 0;
for (int x = 0; !(a[x] == 0 && b[x] == 0); x++) {
sum += a[x] - '0' + b[x] - '0' + flag;
if (sum >= 10) {
flag = 1;
sum -= 10;
c[x] = sum + '0';
}
else {
flag = 0;
c[x] = sum + '0';
}
sum = 0;
index = x;
}
int end;
if (flag) {
c[index] = flag+'0';
end = index + 1;
}
else end = index;
strcpy(d, c);
for (int x = 0; x < strlen(c) / 2; x++)
swap(c[x], c[strlen(c) - x - 1]);
if (strcmp(d, c) == 0)
cout << "YES" << endl;
else
cout << "NO" << endl;
for (int x = 0; x < 8; x++) {
b[x] = 0;
c[x] = 0;
d[x] = 0;
}
}
}
문제 풀이
저는 문자열로 뒤집는 방법을 선택했습니다. 문자열 중간을 기준으로 앞과 뒤를 바꿔주었고 이 때 임의로 값을 저장할 변수도 만들었습니다.
반응형