문제

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

(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

 

+ Recent posts