본문 바로가기
코딩테스트/코딩테스트 문제풀이

자바 JAVA | 백준 2588번 곱셈 | 연산자를 활용한 세 자리 수 곱셈 계산 프로그램

by YUNI Heo 2022. 9. 20.
반응형

 

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

 

2588번: 곱셈

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

www.acmicpc.net

 

✅ 문제

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

  • 시간 제한: 1 초
  • 메모리 제한: 128 MB

 

💡 입력

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

 

💡 출력

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

 

💡 예제 입력 1

472
385

 

💡 예제 출력 1

2360
3776
1416
181720

 

✅ 해결

💡 해결 계획

  1. 세 자리 수 두 개를 입력받는다.
  2. 두 수 중 하나씩 1의 자리부터 곱셈을 진행한다.
  3. 곱셈 결과 값을 출력한다.
  4. 결과 값들을 더하여 출력한다.

 

💡 코드 1 (성공)

시간 복잡도는 O(1)이다.

  • 입력값이 주어진 상수의 개수인 2개로 고정되어 있다.

 

두 개의 정수 a, b를 입력받고, 문제에서 주어진 3 ~ 6번 계산식을 그대로 구현하여 결과를 출력한다. 

  • 3번 계산식에서는 b의 일의 자리를 구하여 a와 곱한다.
  • 4번 계산식에서는 b의 십의 자리를 구하여 a와 곱한다.
  • 5번 계산식에서는 b의 백의 자리를 구하여 a와 곱한다.
  • 6번 계산식에서는 n5에 100을 곱하고, n4에 10을 곱하고, n3과 더한다.

 

import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		
		// 입력받은 두 개의 정수를 a, b에 저장한다.
		int a = sc.nextInt();
		int b = sc.nextInt();

		// 3번을 계산한다. b의 일의 자리를 구하여 a와 곱한다.
		int n3 = a * (b % 10);
		
		// 4번을 계산한다. b의 십의 자리를 구하여 a와 곱한다.
		int n4 = a * ((b / 10) % 10);
		
		// 5번을 계산한다. b의 백의 자리를 구하여 a와 곱한다.
		int n5 = a * (b / 100);
		
		// 6번을 계산한다. n5에 100을 곱하고, n4에 10을 곱하고, n3과 더한다.
		int n6 = n3 + (n4 * 10) + (n5 * 100);
		
		// 결과를 출력한다.
		System.out.println(n3);
		System.out.println(n4);
		System.out.println(n5);
		System.out.println(n6);
	}
}

 

✅ 개념

💡 연산자(operator)

프로그래밍에서 변수, 상수 또는 리터럴(literal)들을 이용하여 계산하는 기호이다.

효율적인 계산과 변수나 상수들의 조작을 가능하게 한다.

 

  • * 연산자를 사용하여 두 개의 정수를 곱한 결과를 구한다.
  • % 연산자를 사용하여 일의 자리, 십의 자리, 백의 자리를 추출한다.
반응형