Completion over Perfection

백준 2588 - 곱셈 (JAVA) 본문

카테고리 없음

백준 2588 - 곱셈 (JAVA)

난차차 2023. 2. 15. 20:26
반응형

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

 

2588번: 곱셈

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

www.acmicpc.net

 

 

조금 생각할 부분들이 있어서 아래 정리합니다. 

 

1. 정답을 구하려면 두번째 숫자를 분해할 줄 알아야합니다. 

여기서 두번째 숫자는 385인데, 이는 300 + 80 + 5와 같은 숫자입니다.

(저는 int형 변수 b에 두번째 숫자를 넣어줬습니다)

 

그럼 두번째 숫자중 100의자리 숫자인 3을 추출하려면 어떻게 해야될까요?

바로 385를 100으로 나눈 몫을 구하면 3이 나오게 되겠죠. 

 

이를 저장해두기 위해서 int형 변수를 아무거나 선언해줍니다. (저는 first로 했습니다)

 

int first = b / 100;

 

이렇게 구하게 되면 first라는 변수에는 3이 들어가게 됩니다. 

 

그럼 다음으로 10의자리 숫자인 8을 추출해내려면 어떻게 해야될까요? 

바로 385에서 백의 자리 숫자를 제거한 뒤에 (385 - 300), 이를 10으로 나눈 몫이 되겠죠. 

그래서 아래와 같이 10자리 숫자도 구해줍니다. 

 

int second = (b - (first*100)) / 10; 

 

마지막 일의자리 숫자인 5는 위에서 구한 백의자리 숫자와 십의자리 숫자를 빼주면 됩니다. 

 

int third = (b - (first*100) - (second*10));

 

2. 위에서 저장해둔 각 자리수를 차례차례 곱해주면 답이 나오게 되고, 마지막 넷쨰줄의 정답은 처음 받아온 int형 변수 a와 b를 곱해주면 됩니다. 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;
import java.util.*;
 
public class Main {
 
    public static void main(String args[]) throws Exception{
 
        Scanner sc = new Scanner(System.in);
 
        int a = sc.nextInt(); // 472
        int b = sc.nextInt(); // 385 = 300 + 80 + 5
 
        int first = b/100// 385 / 100 = 3
        int second = (b-(first*100))/10// (385-300) / 10 = 8
        int third = (b-(first*100)-(second*10)); // 385 - 300 - 80 = 5
 
        System.out.println(a*third); // 472 * 5
        System.out.println(a*second); // 472 * 8
        System.out.println(a*first); // 472 * 3
        System.out.println(a*b);
 
    }
}
 
cs
반응형
Comments