Coding Test/백준 - JAVA

백준 2588번 곱셈 (JAVA)

6uiw 2024. 12. 2. 15:57

📌문제

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

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

 

 

 

 

 

📌답

Scanner보다 BufferedReader의 성능이 더좋다고 해서 입력 방법을 바꿔 봄

 

 

1) 먼저 곱셈에 이용할 두 수 a와 b를 입력받음(BufferdReader 이용)

 

2) 두 수를 123, 213이라 가정하면         (3)에 123*3        (4)에 123*1        (5)에 123*2 이 들어가야 함 

 

3) 위와 같은 계산의 결과를 출력하려면 b(=213)의 각 자리 수를 a에 곱해야하므로 b를 2, 1, 3으로 각각 쪼갠다음 역순으로(3-1-2) a에 곱해주면 된다. (차례대로(2-1-3) 곱한 후 출력만 역으로 해줘도 상관없다.)     따라서 213을 String으로 변환 후에      charAt 메서드를 통해 '213'의 index 2번 1번 0번 순으로 호출해서 a에 곱한다. (String의 index는 0번부터 시작이므로 213은 0~2의 index를 갖는다.) (for 문 이용)

 

4) (6)의 답을 구하기 위해 a와 b를 곱해준 최종 값 출력

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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()); //두 수 입력받기
        
        String temp = String.valueOf(b); //b를 각 자리수로 쪼개기 위해 String형태로 변환
        
        for(int i = temp.length()-1; i>=0; i--) { //b의 각 자리수를 a에 곱한 후 출력
            int c = a*Integer.parseInt(String.valueOf(temp.charAt(i)));
            System.out.println(c);
        }
        
        System.out.println(a*b); //마지막으로 a와 b의 곱셈 최종 연산결과 출력 

    }
}

 

다른 방법도 많지만 귀찮으니 나중에 다시 푸는 걸로...

 

 

 


📢

1. 개발자 준비생이 공부한 내용을 정리한 글입니다. 내용에 오류가 있을 수 있습니다.
2. 위와 같은 이유로 내용에 대한 지적과 조언은 감사하게 받습니다.
3. 이 글의 내용은 계속 공부함으로써 언제든지 추가/수정 될 수 있습니다.