본문 바로가기

알고리즘/백준

[2588]곱셈

수행일자 : 2021.06.05


https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net


문제

  • (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
  • (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력

  • 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

출력

  • 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

입출력 예제


  • 사용자에게서 입력을 받기 위해서는 Scanner 라는 클래스가 필요하다.
 

Scanner

Scanner란 사용자에게 입력 장치로 입력을 받아 그 값을 변수에 저장하는 역할을 하는 클래스이며 입력을 받을 때 자바에서 가장 많이 쓰인다. 설명 JDK 1.5부터 추가되었다. java.util 패키지에 포함

silverji.tistory.com


  •  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