Algorithm/JUNGOL

[정올] 1430 : 숫자의 개수 (**)

Gyuri 2022. 1. 20. 15:52

문제

세 개의 자연수 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번 쓰였다.

 

(1)과 (2)위치에 들어갈 세 자리 자연 수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력형식

첫째 줄에 A 둘째 줄에 B 셋째 줄에 C가 주어진다.

A B C는 모두 100보다 같거나 크고 1 000보다 작은 자연수이다.

출력형식

첫째 줄에는 A×B×C의 결과에 0 이 몇 번 쓰였는지 출력한다.

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

입력 예

150 
266 
427

출력 예

3
1 
0 
2 
0 
0 
0 
2 
0 
0
 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();

        String result = Integer.toString(a*b*c); // 계산 결과값


        int arr[] = new int[10];
        for(int i=0; i<result.length(); i++) {
            arr[result.charAt(i)-'0']++; 
        }
        
        for(int i=0; i<arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

▷ 어떻게 접근해야 할 지 감이 안와서 구글링을 해보면서 풀었는데, 결과값을 int형이 아닌 문자형으로 선언한 후, 하나씩 charAt으로 꺼내서 비교해주면 된다.

 

▶ char - '0' 하면 숫자로 인식! 따라서 result.charAt(i)으로 하나씩 꺼내고 -'0'을 해주면 숫자로 인식하게 돼서 해당 숫자의 개수를 +1 해줌