고급협동조합의 OSM

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

 

10998번: A×B

두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제

두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

출력

첫째 줄에 A×B를 출력한다.


풀이

곱셈은 덧셈을 여러 번 한 것입니다. 따라서 엄준식 언어로 프로그래밍하기 - BOJ 1000: A+B에서 구현한 덧셈 코드를 반복문으로 여러 번 돌리면 곱셈 연산을 구현할 수 있습니다.

덧셈을 구현하는 데는 1을 받는 변수, 1을 뺏기는 변수, 총 2개의 변수만 있으면 됐습니다. 그러나 곱셈을 구현하려면 앞의 두 변수와 함께 더할 숫자를 상수로 계속 저장해 놓을 변수와 덧셈의 결과를 차곡차곡 쌓아 나갈 변수가 추가로 필요합니다(덧셈 연산 중 피연산자 값이 변하기 때문입니다).

 

코드

어떻게
엄식?
어엄식?

어어엄어
동탄어어?준... .....
동탄어어어?준.. .. ...
어어엄어어어,
어어어엄어어어어.
준.. ...

어엄어어,
준.....

식어어어어!
화이팅!.,
이 사람이름이냐ㅋㅋ

01│어떻게

02│식?

03│어엄식?

→ 정수 2개를 입력받아 각각 1번 변수(A), 2번 변수(B)에 저장합니다.

 

04│

05│어어엄

3번 변수를 위에서 언급한 '더할 숫자를 상수로 계속 저장해 놓을 변수'로 지정하고, A의 값을 저장합니다.

 

(곱셈 반복문 시작)
06│동탄어어?... .....
07│동탄어어어?.. .. ...

08│어어엄어어어,
09│어어어엄어어어어.
10│.. ...

6~9번째 줄(덧셈 반복문): 3번 변수+4번 변수의 값을 계산해 4번 변수('덧셈의 결과를 차곡차곡 쌓아 나갈 변수')에 넣고, 2×2×3=12번째 줄로 넘어갑니다. 첫 번째 반복에서는 4번 변수의 값이 0이므로(9번째 줄에서 처음 선언됨) 4번 변수=3번 변수=1번 변수(A)가 됩니다. 두 번째 반복에서는 4번 변수의 값이 A에서 2A로 바뀌고, ... n번째 반복에서는 4번 변수의 값이 n×A가 됩니다.

 6번째 줄은 뒤에서 설명하겠습니다.

 

11│
12│어엄어어,
13│.....

(곱셈 반복문 끝)

→ 2번 변수(B)번만큼 A를 반복해서 더해야 하므로 2번 변수의 값을 1만큼 빼준 후 5번째 줄로 넘어갑니다. 5번째 줄에서 3번 변수의 값을 A로 복구합니다.

 이때 6번째 줄에서 2번 변수의 값이 0인지(= B를 A번 반복해서 더하는 작업이 끝났는지) 확인하고, 만약 그렇다면 3×5=15번째 줄로 넘어갑니다.


14│
15│어어어어!
16│화이팅!.,
17│이 사람이름이냐ㅋㅋ

덧셈을 B번 반복하면 4번 변수의 값은 B×A가 됩니다. 이를 출력한 후 return 0;을 실행합니다.

 

곱셈이 덧셈의 반복이라는 사실을 알고 있으면 풀 수 있는 문제였습니다. 비록 쉽지는 않지만요...

마지막으로 곱셈을 실행하는 파이썬 코드를 보도록 하겠습니다.

print(A * B)
profile

고급협동조합의 OSM

@고급협동조합

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!