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

(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. 이 글의 내용은 계속 공부함으로써 언제든지 추가/수정 될 수 있습니다.
'Coding Test > 백준 - JAVA' 카테고리의 다른 글
백준 10171번 고양이 (JAVA) (0) | 2024.12.02 |
---|---|
백준 11382번 꼬마 정민 (JAVA) (0) | 2024.12.02 |
백준 10430번 나머지(JAVA) (1) | 2024.11.30 |
백준 18108번 1998년생인 내가 태국에서는 2541년생?! (JAVA) (1) | 2024.11.30 |
백준 10926번 ??! (JAVA) (0) | 2024.11.30 |