https://www.acmicpc.net/problem/2588
- 문제
- 문제 풀이
백준 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);
}
}
'백준' 카테고리의 다른 글
[백준] 1110번 : 더하기 사이클 – JAVA [자바] (0) | 2022.07.06 |
---|---|
[백준] 14681번 : 사분면 고르기 – JAVA [자바] (0) | 2022.07.06 |
[백준] 10871번 : X보다 작은 수 – JAVA [자바] (0) | 2022.06.26 |
[백준] 10950번 : A+B - 3 – JAVA [자바] (0) | 2022.06.25 |
[백준] 2753번 : 윤년 – JAVA [자바] (0) | 2022.06.25 |
댓글