문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
풀이
막상 생각하면 쉬운데, 순간적으로 봤을 땐 어 ? 했던 문제
(1)의 숫자를 (2)의 숫자 한 자리씩과 각각 곱해서 중간 결과 (3~5)를 도출한 다음, 중간 결과를 더하면 된다
주의해야 할 점은,
1) 중간 결과 도출 시 (2)번 숫자 한 자리씩 구해서 (1)과 연산해야 한다
2) 중간 결과를 무작정 더하면 안 되고, 자리가 한 자리씩 밀리는 걸 고려해야 한다
정도이다.
1) 번의 경우 각각의 숫자 자리수를 구하는 방법은
100의 자리 | number / 100 |
10의 자리 | ( number % 100 ) / 10 |
1의 자리 | number % 10 |
100의 자리의 경우에는 단순하게 100으로 나눈 몫을 취하면 되고,
10의 자리에서는 100으로 나눈 나머지 (123 % 10을 하면 23이 된다) 에서 10으로 나눈 몫을 취하면 된다.
1의 자리는 10으로 나눈 나머지를 취하면 된다.
2) 번의 경우, 중간 결과 (3 - 5)를 구한 후에 10, 100을 곱해주면 간단하게 해결할 수 있다.
즉 (3)이 2360, (4)가 3776, (5)가 1416인 문제 예시에서, (4)*10, (5)*100을 해 주면
2360 + 37760 + 141600 이 되므로 계산할 때 자리수 고려 없이 (3) + (4) + (5)를 해 주면 된다.
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner ip = new Scanner(System.in);
int num_1 = ip.nextInt();
int num_2 = ip.nextInt();
ip.close();
int a = num_1 * (num_2 % 10);
int b = num_1 * ((num_2 % 100)/10);
int c = num_1 * (num_2 /100);
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(a+(b*10)+(c*100));
}
}
|
cs |
'프로그래밍 > JAVA' 카테고리의 다른 글
acmicpc(baekjoon) 9488 - 시험 성적 (0) | 2021.02.08 |
---|---|
acmicpc(baekjoon) 1330 - 두 수 비교하기 (0) | 2021.02.08 |
acmicpc(baekjoon) 10430 - 나머지 (0) | 2021.01.24 |
acmicpc(baekjoon) 10869 - 사칙연산 (0) | 2021.01.24 |
acmicpc(baekjoon) 1008 - A/B (0) | 2021.01.23 |