본문 바로가기

Algorithm/백준

[백준 알고리즘] 2577번 문제: 숫자의 개수 (Java)

728x90
반응형

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

 

2577번: 숫자의 개수

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

www.acmicpc.net

 

문제

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

입력

첫째 줄에 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();

        int total = a * b * c;

        String[] tot = Integer.toString(total).split("");
        int cnt = 0; 

        for(int i=0; i<10; i++){
            for(int j=0; j<tot.length; j++){
                if(i == Integer.parseInt(tot[j])){
                    cnt++;
                }
            }
            System.out.println(cnt);
            cnt = 0;
        }
    }
}

코드 설명

1. total이라는 변수에 받아온 숫자 세개를 곱한다.

2. tot라는 string 배열에 곱한 숫자 total을 string으로 변환시켜 split을 이용해 한개씩 구한다.

3. 0~9까지 반복하고 그 안에 tot라는 배열을 반복해 i와 tot에서 한개씩 가져온 숫자를 비교하여 cnt라는 변수를 카운트한다.

4. 카운트한 변수를 출력하고 다시 초기화 시킨다. 

728x90
반응형