수행일자 : 2021.06.05
https://www.acmicpc.net/problem/2588
문제
- (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
- (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
- 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
출력
- 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
입출력 예제
- 사용자에게서 입력을 받기 위해서는 Scanner 라는 클래스가 필요하다.
- Scanner에 대한 자세한 설명은 아래를 참조하면 된다.
- https://silverji.tistory.com/34
- int형 변수 A 와 String형 변수 B를 선언한다. A에는 472가 들어가고, B에는 385가 들어간다.
- (3) 에 들어갈 값을 계산하려면 472 * 5 를 하면 된다.
- (4) 에 들어갈 값을 계산하려면 472 * 8 를 하면 된다.
- (5) 에 들어갈 값을 계산하려면 472 * 3 하면 된다.
- (6) 에 들어갈 값을 계산하려면 472 * 385 를 하면 된다.
- 계산하기 위해서는 B에 입력된 값을 하나씩 뽑아내야 하는데, 이를 위해 charAt() 메소드를 사용해서 각 자리수의 값을 뽑아서 사용한다.
- charAt()은 계산 시, 자동으로 형변환을 해주기 때문에 아래 상황에서는 int 형변환이 이루어진다.
- 다만 charAt()은 아스키 코드값으로 결과값을 반환하므로 입출력 예제에 나온 값과 다를 것이다.
- 이를 해결하기 위해 charAt()으로 계산한 값에 [ '0' ] 을 빼준다.
- 문자 '0' 의 아스키 코드값은 48
- 문자 '3' 의 아스키 코드값은 51
- 문자 '5' 의 아스키 코드값은 53
- 문자 '8' 의 아스키 코드값은 56
- 위와 같이 아스키 값이 48인 '0'을 빼줌으로 인해 결과적으로 문자 그대로의 값이 나오게 된다.
- 다만 A와 B 자체를 곱할때에는 자릿수를 뽑을 필요가 없으므로 B를 int 형으로 형변환해서 결과값을 출력한다.
아스키 코드 표
[그림 출처 : https://blog.naver.com/ansdbtls4067/220624120433 ]
답안 소스
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
String B = sc.next();
System.out.println(A * (B.charAt(2) - '0'));
System.out.println(A * (B.charAt(1) - '0'));
System.out.println(A * (B.charAt(0) - '0'));
System.out.println(A * Integer.parseInt(B));
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[9498]시험 성적 (0) | 2021.06.09 |
---|---|
[1330]두 수 비교하기 (0) | 2021.06.07 |
[10430]나머지 (0) | 2021.05.30 |
[10869]사칙연산 (0) | 2021.05.30 |
[1008]A/B (0) | 2021.05.30 |