DY N DY

실력키우기 숫자의 개수(JAVA) 본문

PARK/ALGORITHM

실력키우기 숫자의 개수(JAVA)

손세지 2016. 4. 28. 10:53

1430 : 숫자의 개수

제한시간: 1Sec    메모리제한: 32mb
해결횟수: 1233회    시도횟수: 1913회   



세 개의 자연수 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의 결과에 0부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.


 [Copy]
150 
266 
427
 [Copy]
3
1 
0 
2 
0 
0 
0 
2 
0 
0



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**************************************************************
    Problem: 1430
    User: a132034
    Language: Java
    Result: Success
    Time:160 ms
    Memory:9308 kb
****************************************************************/
 
 
import java.util.Scanner;
 
public class Main
{
    private static Scanner sc;
    public static int[] result;
    public static void main(String[] args) {
        sc = new Scanner(System.in);
         
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        Integer res = a*b*c;
        char[] resArr = res.toString().toCharArray(); 
        //숫자를 저장할 배열
        int numArr[] = new int[10];
        for(int i = 0 ; i < resArr.length; ++i)
        {
            numArr[Integer.parseInt(res.toString().substring(i, i+1))]++;
        }
     
        for (int i : numArr) {
            System.out.println(i);
        }
    }
}



JAVA에는 참 유용한 함수가 많다. 

C, C++이었다면 약간 고민했을 부분이 몇 군데 있기는 하지만 

int의 wrapper class인 Integer로 a * b * c의 결과값을 받아 String으로 가져왔다. 

만약 String이나 char를 사용하기 싫다면 결과값의 자릿수만큼 반복문(while이 적당할 것 같다.)을 돌며 

몫을 이용하면 풀 수 있을 것 같다. 

여기서는 substring을 이용해서 결과 String을 하나씩 가져와 int형으로 바꾸어 주어 

값이 0일 경우 0번째 배열의 값을 +1 해주고,

값이 1일 경우 1번째 배열의 값을 +1 해주는 방법을 사용했다. 

'PARK > ALGORITHM' 카테고리의 다른 글

실력키우기 수열(JAVA)  (0) 2016.04.29
실력키우기 큐(JAVA)  (0) 2016.04.29
실력키우기 문자열찾기(JAVA)  (0) 2016.04.28
실력키우기 스택(JAVA)  (0) 2016.04.27
실력키우기 이진탐색(JAVA)  (0) 2016.04.26