알고리즘 문제풀이/Beakjoon

백준 2588. 곱셈 (JAVA)

joah.k 2023. 2. 10. 18:00
728x90

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

 

2588번: 곱셈

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

www.acmicpc.net

 

곱셈 

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 276168 131492 110847 47.927%

문제

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

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

입력

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

출력

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

예제 입력 1 복사

472
385

예제 출력 1 복사

2360
3776
1416
181720

 

 

 


풀이 : 바보같이 처음엔 숫자열을 하나하나 쪼개려 했다.. 왜 그랬을까.. 

단순히 a * (b의 일의 자리 수) , a * (b의 십의 자리 수), a * (b의 백의 자리 수) 를 구하는 문제인데 말이다. 

(3)~(4) 번 출력 : b의 일, 십, 백의 자리수를 구하는 것도 그냥 나눗셈과 나머지를 이용하면 쉽게 구할 수 있다. 

(6) 번 출력 : 곱셈의 결과니까 a*b 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    // 백준 2588. 곱셈
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(br.readLine());
        int b = Integer.parseInt(br.readLine());

        int ans3 = (b%10)*a;  // b의 일의 자리 수 * a
        int ans4 = ((b%100)/10)*a; // b의 십의 자리 수 * a
        int ans5 = (b/100)*a;  // b의 백의 자리 수 * a

        System.out.println(ans3);
        System.out.println(ans4);
        System.out.println(ans5);
        System.out.println(a*b); // (6)은 곱셈의 결과
    }
}
728x90