하루의 쉼터

[BAEKJOON] 2588. 곱셈 본문

Coding Test/BaekJoon

[BAEKJOON] 2588. 곱셈

Changun An 2021. 10. 10. 20:07
반응형

Title :
2588. 곱셈

Quest :
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.


(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

Input :
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

Output :
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

example :
input
472
385
output
2360
3776
1416
181720

Limited-time :
1 초
Limited-space :
256 MB

 

* 본문에서는 문제를 해결하는 것과 몇째 자리의 수가 오더라도 풀도록 해결하였다.
* 문제에서는 세자리 * 세자리로 지정되어 있어 예외처리가 필요없었으나 속도 향상을 위해 a or b 가 0이면 0으로 리턴하였다.

 

전체 FlowChart :

Start Class :

class cl_solution{
	public :
		void fn_run(int a, int b);
};

cl_solution.h

#include <iostream>
class cl_solution{
	public :
		void fn_run(int a, int b);
};

cl_solution.cpp

#include "cl_solution.h"
void cl_solution::fn_run(int a, int b){
	int result = 0, cnt=1;
	if (a == 0 || b == 0) {
		std::cout << "0" << std::endl;
	}
	while (b > 0) {
		result+=((a* (b % 10))*cnt);
		std::cout << (a * (b % 10))<<std::endl;
		b /= 10;
		cnt *= 10;
	}
	std::cout << result << std::endl;
}

main.cpp

#include"cl_solution.h"
int main() {
		cl_solution* sol = new cl_solution();
		int a = 0, b = 0;
		std::cin >> a;
		std::cin >> b;
		sol->fn_run(a,b);
		delete sol;
	return 0;
}

 

코드 분석 :

1. a or b 가 0인지 판단

	if (a == 0 && b == 0) {
		std::cout << "0" << std::endl;
	}

 

2. 동작

int result = 0, cnt=1;
while (b > 0) {
		result+=((a* (b % 10))*cnt);
		std::cout << (a * (b % 10))<<std::endl;
		b /= 10;
		cnt *= 10;
	}

문제에서는 472 * 385*1 이는 472*5 + 472*8*10 + 472*3*100과 같다.

즉 b의 자리수 만큼 돌 것이며, 10^n 을 곱하여 더해준 값과 같다.  

1,10,100을 체크 하기 위하여 cnt를 사용하였다.

 

Baekjoon :

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

Github :

https://github.com/Anchangun/BaekJoon/tree/main/Question/Math/Calculation/2588.%20%EA%B3%B1%EC%85%88

 

반응형

'Coding Test > BaekJoon' 카테고리의 다른 글

[BAEKJOON] 1065. 한수 - Feat. C++  (0) 2021.10.30
[BAEKJOON] 4344. 평균은 넘겠지  (0) 2021.10.24
[BAEKJOON] 1100. 더하기 사이클  (0) 2021.10.17
[BAEKJOON] 10871. X보다 작은 수  (0) 2021.10.11
[BAEKJOON] 2884. 알람 시계  (0) 2021.10.11
Comments