코딩 테스트/백준

[백준2577/JAVA] 숫자의 개수

리져니 2021. 7. 8. 23:26

문제

세 개의 자연수 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

출처

Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2006 > 초등부 2번

 

 


코드

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


public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int result = 1;
        int[] arr = new int[10];

        for(int i=0;i<3;i++){
           int curr = Integer.parseInt(br.readLine());
           result*=curr;
        }

        String str = String.valueOf(result);

        for(int i=0;i<str.length();i++){
            arr[(str.charAt(i)-'0')] ++;
        }

        for(int e : arr) {
            System.out.println(e);
        }
    }
}

 

풀이

int result = 1;
int[] arr = new int[10];

result : 입력받은 숫자들을 곱하기 연산하기 위해 1값으로 초기화

arr : 0부터 9까지의 숫자들의 갯수를 각각 저장하기 위해 길이 10의 배열을 생성

 

 for(int i=0;i<3;i++){
           int curr = Integer.parseInt(br.readLine());
           result*=curr;
        }

bufferedReader로 입력받은 숫자를 int curr에 대입하여 곱하기 연산을 진행

 

String str = String.valueOf(result);

        for(int i=0;i<str.length();i++){
            arr[(str.charAt(i)-'0')] ++;
        }

String.valueOf()를 이용하여 integer 타입의 변수를 String으로 형변환.

for문을 통해 문자열의 각 요소에 접근하여 해당 요소를 정수형으로 변환하여 arr의 각 인덱스에 저장

* 인덱스에 해당하는 숫자들을 넣어준다.

  ex. 0 -> arr[0]

       1 -> arr[1]

       2 -> arr[2] ...

 

for(int e : arr) {
            System.out.println(e);
        }

배열에 들어있는 각 요소들을 출력

 

 

결과

728x90

'코딩 테스트 > 백준' 카테고리의 다른 글

[백준2908/JAVA] 상수  (0) 2021.07.09
[백준2675/JAVA] 문자열 반복  (0) 2021.07.09
[백준2526/JAVA] 최댓값  (0) 2021.07.05
[백준10871/JAVA] X보다 작은 수  (0) 2021.07.05
[백준10818/JAVA] 최소, 최대  (0) 2021.07.05