본문 바로가기
백준

[백준] 2577번 : 숫자의 개수 – JAVA [자바]

by Hongwoo 2022. 7. 6.
반응형

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

 

2577번: 숫자의 개수

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2577번 숫자의 개수는 브론즈 2 난이도의 수학 및 구현 문제이다. 이 문제에서는 3개의 세 자릿수 A, B, 그리고 C가 주어진다. 그리고 A × B × C의 값에서 0부터 9까지 각각의 숫자가 몇 번씩 있는지를 출력하면 된다. 

 

한번 문제에서 주어진 예시를 보겠다.

 

EX) A = 150, B = 266, C = 427

A × B × C = 17037300이다. 

0이 3번, 1이 1번, 3이 2번, 7이 2번씩 있다.

 

따라서 3102000200을 각각 다른 줄에 써서 출력하면 된다.

 

이 문제에서는 각 수의 count를 세야 한다. 여기서 배열을 쓰면 간단하게 풀 수 있다. 크기가 10인 int형 배열 count를 선언한다. 그러면 초기에는 인덱스가 0부터 9까지 있으므로 0부터 9의 count를 쉽게 저장할 수 있다. 

 

그리고 A × B × C의 값을 String형으로 저장한다. 그러면 for-loop을 돌렸을 때 숫자 하나하나를 쉽게 볼 수가 있기 때문이다. 위에서 풀었던 예시를 다시 한번 보겠다.

 

 A × B × C의 값은 17037300이었다. 이 값을 String형 변수 s로 저장한다. 그리고 for-loop을 i = 0부터 i < s.length()까지 돌리고 count [Character.getNumericValue(s.charAt(i))]++ 해준다. 이게 무슨 함수냐면 s.charAt(i)를 하면 A × B × C의 값의 숫자 하나가 나오고 배열 count의 그 값 인덱스를 +1 해준다는 것이다. 자세한 코드는 밑에 있다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(br.readLine());
        int b = Integer.parseInt(br.readLine());
        int c = Integer.parseInt(br.readLine());
        int[] count = new int[10];
        String s = Integer.toString(a * b * c);
        for (int i = 0; i < s.length(); i++) {
            count[Character.getNumericValue(s.charAt(i))]++;
        }
        for (int i = 0; i < 10; i++) {
            System.out.println(count[i]);
        }
    }
}
반응형

댓글