본문 바로가기
코딩 테스트/[JAVA] 백준

[2588] 곱셈 / 백준 baekjoon 2588번 곱셈 | C++

by M개발자 2021. 5. 4.
반응형

(세 자릿수) 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;
}

백준 2588번 문제

github

반응형

댓글