본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 26. 세 자리 수의 곱셈 계산

by 제이투더문 2024. 7. 5.

 

 안녕하세요, 작가 J입니다. 이번에는 세 자리 수의 곱셈 과정을 단계별로 출력하는 프로그램을 작성해 보겠습니다. 이 예제는 숫자를 자리수로 분해하여 각 자리의 곱셈 결과를 출력하는 방법을 이해하는 데 도움이 됩니다.

 

[Java Festival 26] 세 자리 수의 곱셈 계산

(세 자리 수) * (세 자리 수)는 다음과 같이 계산된다.

 

(1), (2)번을 입력받아 결과 화면처럼 (3), (4), (5), (6)번을

출력하는 프로그램을 작성하시오

 

 

 

코드 풀이 1: 자리수를 분리하여 곱셈 결과 출력

package Ex;

import java.util.Scanner;

public class Ex26 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 사용자로부터 두 개의 세 자리 수를 입력받기
        System.out.print("첫 번째 숫자 입력 >> ");
        int num1 = sc.nextInt();
        System.out.print("두 번째 숫자 입력 >> ");
        int num2 = sc.nextInt();
        
        // 두 번째 숫자의 각 자리 수를 분리
        int units = num2 % 10; // 일의 자리
        int tens = (num2 % 100) / 10; // 십의 자리
        int hundreds = num2 / 100; // 백의 자리
        
        // 각 자리 수와 첫 번째 숫자의 곱셈 결과 출력
        System.out.println(num1 * units);
        System.out.println(num1 * tens);
        System.out.println(num1 * hundreds);
        
        // 전체 곱셈 결과 출력
        int result = (num1 * units) + (num1 * tens * 10) + (num1 * hundreds * 100);
        System.out.println(result);
        
        sc.close();
    }
}

 

1. 사용자 입력 받기

  • System.out.print("첫 번째 숫자 입력 >> ");
  • System.out.print("두 번째 숫자 입력 >> ");
  • 사용자가 입력한 두 개의 세 자리 수를 num1과 num2에 저장합니다.

2. 두 번째 숫자의 각 자리 수 분리

  • int units = num2 % 10;: 일의 자리 수를 계산합니다.
  • int tens = (num2 % 100) / 10;: 십의 자리 수를 계산합니다.
  • int hundreds = num2 / 100;: 백의 자리 수를 계산합니다.

3. 각 자리 수와 첫 번째 숫자의 곱셈 결과 출력

  • System.out.println(num1 * units);: 일의 자리 수와 곱한 결과를 출력합니다.
  • System.out.println(num1 * tens);: 십의 자리 수와 곱한 결과를 출력합니다.
  • System.out.println(num1 * hundreds);: 백의 자리 수와 곱한 결과를 출력합니다.

4. 전체 곱셈 결과 출력

  • int result = (num1 * units) + (num1 * tens * 10) + (num1 * hundreds * 100);
  • 모든 자리 수와의 곱셈 결과를 합산하여 출력합니다.

 

코드 풀이 2: 간단한 반복문을 사용한 방식

package Ex;

import java.util.Scanner;

public class Ex26Alternative {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 사용자로부터 두 개의 세 자리 수를 입력받기
        System.out.print("첫 번째 숫자 입력 >> ");
        int num1 = sc.nextInt();
        System.out.print("두 번째 숫자 입력 >> ");
        int num2 = sc.nextInt();
        
        // 두 번째 숫자를 문자열로 변환
        String num2Str = String.valueOf(num2);
        
        // 각 자리 수와 첫 번째 숫자의 곱셈 결과 출력
        for (int i = num2Str.length() - 1; i >= 0; i--) {
            int digit = Character.getNumericValue(num2Str.charAt(i));
            System.out.println(num1 * digit);
        }
        
        // 전체 곱셈 결과 출력
        System.out.println(num1 * num2);
        
        sc.close();
    }
}

 

1. 두 번째 숫자를 문자열로 변환

  • String num2Str = String.valueOf(num2);: num2를 문자열로 변환합니다.

2. 각 자리 수와 첫 번째 숫자의 곱셈 결과 출력

  • for (int i = num2Str.length() - 1; i >= 0; i--) { ... }
  • 문자열의 각 자리 수를 거꾸로 순회하여 해당 자리 수와 num1의 곱셈 결과를 출력합니다.

3. 전체 곱셈 결과 출력

  • System.out.println(num1 * num2);: 두 숫자의 전체 곱셈 결과를 출력합니다

 

마무리

 이번 예제에서는 세 자리 수의 곱셈 과정을 단계별로 출력하는 두 가지 방법을 다뤄보았습니다. 첫 번째 방법은 자리 수를 분리하여 각 자리의 곱셈 결과를 출력하는 방식이며, 두 번째 방법은 문자열로 변환한 후 반복문을 사용하여 각 자리의 곱셈 결과를 출력하는 방식입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.

 

 프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!