본문 바로가기
백준

[백준] 2588번 : 곱셈 – JAVA [자바]

by Hongwoo 2022. 7. 6.
반응형

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

 

2588번: 곱셈

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2588번 곱셈은 브론즈 3 난이도의 수학 문제이다. 이 문제에서는 2개의 세 자리 수 a와 b가 주어진다. 그리고 a × b의 1의 자리 수, a × b의 10의 자리 수, a × b의 100의 자리 수, 그리고 마지막으로 a × b의 값을 출력하면 된다. 

 

우선 세 자리 수가 주어졌을 때 어떻게 1의 자리 수와, 10의 자리 수, 그리고 100의 자리 수를 구할 수 있는지 보겠다. 바로 나머지 (modulus)를 이용하면 된다. 

 

세 자리 수 n이 있다고 가정해 보겠다. 이 n의 1의 자리 수를 구하려면 n % 10을 하면 된다. 

 

그리고 n의 10의 자리 수를 구하려면 우선 n을 10으로 나누고 이 나눈 값의 나머지 10을 하면 된다. 즉, ((n / 10) % 10)을 하면 된다.

 

그리고 n의 100의 자리 수를 구하려면 n / 100을 하면 된다. 여기에서 세 자리 수를 int형으로 입력받을 것이기 때문에 나눌 때 나머지는 신경 쓸 필요 없다.

 

이제 문제에서 주어진 예시를 한번 보겠다. 

 

EX) a = 472, b = 385

 

우선 b의 1의 자리 수를 구해보겠다. 385 % 10 =  5이다. 따라서 472 × 5 = 2360이다.

 

그리고 b의 10의 자리 수는 ((385 / 10) % 10) = 8이다. 따라서 472 × 8 = 3776이다.

 

b의 100의 자리 수는 385 / 100 = 3이므로 472 × 3 = 1416이다. 

 

따라서 a × b = 181720이므로 이 수들을 차례로 출력해주면 된다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {

    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());
        StringBuilder sb = new StringBuilder();
        int three = a * (b % 10);
        int four = a * ((b / 10)%10);
        int five = a * (b / 100);
        int six = a * b;
        sb.append(three + "\n" + four + "\n" + five + "\n" + six);
        System.out.print(sb);
    }
}

 

반응형

댓글