[ Baekjoon ] 2577번 ( Bronze II ) : 숫자의 개수 (Java)

ma.caron_g·2021년 12월 13일
0
post-thumbnail

1. Problem 📃

[ 숫자의 개수 ]

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


[ 문제 ]

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.

예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.


2. Input 📇

[ 입력 ]

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.


3. Output 📠

[ 출력 ]

첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다.
마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.


4. Example 📚

[ 입출력 예시 ]

예제 입력예제 출력
150
266
427
3
1
0
2
0
0
0
2
0
0

5. Solution 🔑

  1. 0부터 9까지 개수를 세어줄 배열 변수(number)를 선언해주고,
    입력 받은 세 수의 곱을 담아줄 변수(mul)을 선언해준다.

  2. 세개의 자연수를 받는다고 제시 돼 있으므로 for문을 3번 돌려 입력 받은 값들을 mul에 곱해준다. (mul의 초기화 된 값이 0이면 최종적으로 0이 되므로 곱셈에 지장없게 1로 초기화.)

  3. 정수 mul값을 문자열로 변경하여 toCharArray()를 이용하여 한자리씩 나누어 문자 배열(numbers) 담아준다.

  4. 문자 배열(numbers)를 for문으로 numbers의 길이만큼 돌려 값들을 하나씩 확인하면서 해당 값 - '0'을 하여 몇 번째 수인지 확인하고 해당 값을 인덱스에 넣어 배열 값을 증가(++)시킨다.
    ('0' - '0' = 0 이고 '3' - '0' = 3 이다. 배열이 0부터 시작하므로 '0'을 뺀 값이 배열 인덱스 값이 된다.)

  5. 0~9까지 몇 개가 사용되었는지 나타내는 배열(number)를 하나씩 개행하여 출력한다.

6. Code 💻

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int mul = 1;
			
		for(int i=0; i<3 ; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			mul *= Integer.parseInt(st.nextToken());
		}
		char[] numbers = Integer.toString(mul).toCharArray();
		int[] number = new int[10];
		
		for(int i=0; i<numbers.length; i++) {
			number[numbers[i]-'0']++;
		}
		
		for(int i=0; i<number.length; i++) {
			System.out.println(number[i]);
		}
		
		
	}

}

7. Growth 🍄

위와 비슷한 방식으로 숫자의 개수뿐만 아닌 알파벳의 개수를 세는 유형도 나온다.
이번 문제에 사용한 세어주는 배열 변수를 알아두면 다른 문제 풀 때 도움이 된다.
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글