반응형
(세 자릿수) x (세 자릿수)
문제 설명
(세 자릿수) x (세 자리 수) 계산 과정 출력하기
입력 : (1), (2)
출력 : (3), (4), (5), (6)
예시
input | output |
472 385 |
2360 3776 1416 181720 |
코드 해석 및 전체 코드
for문 해석
for (int i = 1; num2 / i != 0; i *= 10){ ... }
int i = 1; | 주석 1-1에서 num2를 1로 나누기 위해 i의 초깃값을 1로 준다. |
num2 / i != 0; | num2를 i(1, 10, 100, ...)으로 나누어 num2가 0일 때 포문을 나간다. |
i *= 10 | 주석 1-2, 1-3을 도출하기 위해 i를 10의 배수로 곱한다. |
for문 돈 횟수 | i | num2 / i (num2 = 385) | rNum2 (num2의 끝자리수) |
1 | 1 | 385 | 5 |
2 | 10 | 38 | 8 |
3 | 100 | 3 | 3 |
for문을 4번째 돌았을 땐 num2 / i의 값이 0이 되므로 num2 / i != 0의 조건을 만족하지 않아 for문을 탈출한다.
#include <iostream>
using namespace std;
int main() {
int num1, num2;
int sum = 0;
cin >> num1 >> num2;
for (int i = 1; num2 / i != 0; i *= 10) {
int rNum2 = (num2 / i) % 10;
cout << num1 * rNum2 << endl;
sum += (num1 * rNum2) * i;
}
//포문 풀이
/*int rNum2 = (num2 / 1) % 10; //1-1
cout << num1 * rNum2 << endl; //2-1
sum += (num1 * rNum2) * 1; //1-1
rNum2 = (num2 / 10) % 10; //1-2
cout << num1 * rNum2 << endl; //2-2
sum += (num1 * rNum2) * 10; //1-2
rNum2 = (num2 / 100) % 10; //1-3
cout << num1 * rNum2 << endl; //2-3
sum += (num1 * rNum2) * 100; //1-3
*/
cout << sum << endl;
return 0;
}
반응형
'코딩 테스트 > [JAVA] 백준' 카테고리의 다른 글
[JAVA] 백준 1373번 2진수 8진수 (0) | 2022.03.15 |
---|---|
[JAVA] 백준 8674번 Tabliczka (0) | 2022.03.10 |
[JAVA] 백준 5893번 17배 (0) | 2022.03.10 |
[JAVA] 백준 14623번 감정이입 (0) | 2022.03.10 |
[2884] 알람 시계 / 백준 baekjoon 2884번 알람 시계 | C++ (0) | 2021.05.06 |
댓글