-
[C][백준] 1357번 뒤집힌 덧셈 풀이 : 문자열, 배열을 쓰지 않고, C 숫자 분리Algorithm/백준 2022. 9. 29. 21:39728x90
뒤집힌 덧셈.
학생들이 반복문을 배웠을 때 이 문제를 풀어야한다더라
처음에는 배열을 이용하여 풀었..지만
아뿔싸!
커리큘럼상 반복문을 배우고 나서 배열과 문자열을 배운다.
어떻게 하면 반복문과 조건문만을 가지고 이 문제를 풀 수 있을까??
이 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'Algorithm > 백준' 카테고리의 다른 글
[C][백준] 1932. 정수 삼각형 구현하기 | Dynamic Programming (0) 2023.03.03 [C][백준] 20055번 컨베이어 벨트 위의 로봇 풀이 : 원형 연결리스트, 삼성 SW 역량 테스트 기출 문제 (0) 2022.11.02 [C][백준] 2346번 풍선 터뜨리기 문제 풀이 : 원형 연결리스트를 사용하여 (0) 2022.09.07 [C][백준] 1158번 요세푸스 문제 : C, 원형연결리스트로 해결 (0) 2022.09.01 [Python][백준] 누적 합 알고리즘 | 11659번 구간 합 구하기 4 시간초과 해결 (0) 2022.04.18