백준/C++

[백준] 2588번: 곱셈 | C++ 풀이

성실한 당근농부 2023. 5. 3. 13:38

# 문제

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

 

 


 

# 풀이

나눗셈 연산자와 나머지 연산자에 대해 알고 있다면 어렵지 않은 문제다.

코드를 보기에 앞서 어떻게 풀면 좋을지 잠시 생각해보자.

우리가 구해야 할 값은 (3), (4), (5), (6)이다.

 

다음을 통해 살펴보면

(3)은 (1)과 (2)의 5를 곱한 값, 472*5 = 2360

(4)는 (1)과 (2)의 8을 곱한 값, 472*8 = 3776

(5)는 (1)과 (2)의 3을 곱한 값, 472*3 = 1416

(6)은 (1)과 (2)를 그대로 곱한 값이다.

 

 


 

 

그렇다면 우리는 (2)를 분해할 필요가 생기는데, 이때 필요한 것이 나머지 연산자다. (+나눗셈 연산자)

정답 소스코드를 보며 확인해보자.

 

#include <iostream>
using namespace std;

int main(){
    int a, b;
    cin >> a >> b;
    
    cout << a * (b%10) << endl;
    cout << a * ((b/10)%10) << endl;
    cout << a * (b/100) << endl;
    cout << a*b;
    
    return 0;
}

 

첫번째 (3)을 구하는 과정이다.

385의 5를 구하기 위해 b%10 연산을 수행해주었다.

수행 결과는 5이므로, 472*5 = 2360이 출력된다.

 

두번째 (4)를 구하는 과정이다.

385의 8을 구하기 위해 b/10을 해준 38에서 나머지 연산을 수행해준다.

수행 결과는 8이므로, 472*8 = 3776이 출력된다.

 

세번째 (5)를 구하는 과정이다.

385의 3을 구할 때는 나누기 연산만으로도 충분하다.

b/100으로 3을 구해, 472*3 = 1416을 출력한다.

 

마지막으로 (6)을 구할 땐 우리가 알고있는 그대로 a*b 연산을 수행해 출력해주면 된다.

 

 

 


 

 

 

2588번: 곱셈

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

www.acmicpc.net

728x90