Algorithm/백준
[C][백준] 1357번 뒤집힌 덧셈 풀이 : 문자열, 배열을 쓰지 않고, C 숫자 분리
이무기뱀술
2022. 9. 29. 21:39
728x90
뒤집힌 덧셈.
학생들이 반복문을 배웠을 때 이 문제를 풀어야한다더라
처음에는 배열을 이용하여 풀었..지만
아뿔싸!
커리큘럼상 반복문을 배우고 나서 배열과 문자열을 배운다.
어떻게 하면 반복문과 조건문만을 가지고 이 문제를 풀 수 있을까??
이 2가지를 잘 생각하면 문제를 풀 수 있다.
1. 주어지는 수는 1000 보다 작거나 같다.
2. 수에서 숫자 분리하는 방법.
// 수에서 숫자 하나씩 분리
int num = 123;
while(num)
{
printf("%d", num % 10);
num /= 10;
}
// 출력결과: 321
수를 10으로 나눈 나머지를 출력하고 수를 10으로 나누면 수를 숫자 하나하나씩 분리할 수 있다.
풀이:
// 문자열, 배열을 사용하지 않고, 반복문, 조건문만 사용해서 풀 것.
#include <stdio.h>
int main()
{
int num1, num2, res;
int r1 = 0, r2 = 0, r3 = 0;
scanf("%d %d", &num1, &num2);
for (int i = 1000; i > 0; i /= 10) // 1000부터 1까지 반복
{
if (num1 / i != 0) // 나누었을 때 0이 되면(자리수 보다 i가 크면) 실행 안 함.
{
r1 += (num1 % 10) * i; // 원래 수로 복원하여 r1에 저장
num1 /= 10; // 그 다음 자리수 구하기
}
if (num2 / i != 0)
{
r2 += (num2 % 10) * i;
num2 /= 10;
}
}
res = r1 + r2;
for (int i = 1000; i > 0; i /= 10) // 결과도 같은 방식으로 출력
{
if (res / i != 0)
{
r3 += (res % 10) * i;
res /= 10;
}
}
printf("%d", r3);
return 0;
}
728x90