- Algorithm
- Kubernetes
- programmers
- codingTest
- Unix_System
- app
- Java
- Personal_Study
- Univ._Study
- datastructure
- study
- SingleProject
- Python
- Linux
- 오블완
- cloud_computing
- 자격증
- Artificial_Intelligence
- 리눅스마스터2급
- Android
- Database_Design
- Baekjoon
- C
- c++
- 2023_1st_Semester
- Operating_System
- pytorch
- Image_classification
- tensorflow
- 티스토리챌린지
코딩 기록 저장소
[백준/Java] 2588번: 곱셈 본문
문제 정보
제목 : 곱셈
번호 : 2588번
사용 언어 : Java
문제 링크
https://www.acmicpc.net/problem/2588
2588번: 곱셈
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
www.acmicpc.net
시간 제한 | 메모리 제한 |
1 초 | 128 MB |
문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
입출력 예제

나의 풀이
버퍼와 split()메소드를 이용해 입력받은 수를 자릿값 별로 나눠서 문자열형 배열 w에 저장합니다. 그리고 for루프를 이용해 정수형 배열인 num에 넣어줬습니다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] w = br.readLine().split("");
int[] num1 = new int[3];
for(int i = 0 ; i < 3; i++) {
num1[i] = Integer.parseInt(w[i]);
}
w = br.readLine().split("");
int[] num2 = new int[3];
for(int i = 0 ; i < 3; i++) {
num2[i] = Integer.parseInt(w[i]);
}
자릿수에 접근할 2중 for루프를 생성합니다.
먼저 내부 반복문에서는 자리에 맞게 곱셈 계산을 하고 n에 저장합니다. 첫째 줄에 들어간 수의 자릿수에 따라 n*10을 할지 n*100을 할지 판단하여 값을 구하고 tmp에 저장합니다.
for(int k = 2; k >=0; k--) {
int n = num1[k] * num2[j];
if( k == 1 ) {
n *= 10;
} else if( k == 0) {
n *= 100;
}
tmp += n;
}
내부의 반복문이 끝나면 tmp를 출력하고 둘째 줄의 자릿수에 따라 tmp*10을 할지 tmp*100을 할지 판단하여 값을 구하고, 결과 값을 출력할 변수(sum)에 tmp를 저장합니다.
for(int j = 2; j >= 0; j--) {
int tmp = 0;
for(int k = 2; k >=0; k--) {
//내부 for문이 실행됨
}
bw.write(tmp +"\n");
if( j == 1 ) {
tmp *= 10;
} else if( j == 0) {
tmp *= 100;
}
sum += tmp;
}
모든 반복이 끝나면 sum을 출력합니다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int sum = 0;
String[] w = br.readLine().split("");
int[] num1 = new int[3];
for(int i = 0 ; i < 3; i++) {
num1[i] = Integer.parseInt(w[i]);
}
w = br.readLine().split("");
int[] num2 = new int[3];
for(int i = 0 ; i < 3; i++) {
num2[i] = Integer.parseInt(w[i]);
}
for(int j = 2; j >= 0; j--) {
int tmp = 0;
for(int k = 2; k >=0; k--) {
int n = num1[k] * num2[j];
if( k == 1 ) {
n *= 10;
} else if( k == 0) {
n *= 100;
}
tmp += n;
}
bw.write(tmp +"\n");
if( j == 1 ) {
tmp *= 10;
} else if( j == 0) {
tmp *= 100;
}
sum += tmp;
}
bw.write(sum +"\n");
bw.flush();
bw.close();
br.close();
}
}
'백준 > 입출력과 사칙연산 (완료)' 카테고리의 다른 글
[백준/Java] 10172번: 개 (0) | 2023.04.12 |
---|---|
[백준/Java] 10171번: 고양이 (0) | 2023.04.12 |
[백준/Java] 11382번: 꼬마 정민 (0) | 2023.04.12 |
[백준/Java] 10430번: 나머지 (0) | 2023.04.12 |
[백준/Java] 18108번: 1998년생인 내가 태국에서는 2541년생?! (0) | 2023.04.09 |