remagine

알고리즘 풀기 (5) 숫자의 갯수 (매우 쉬움) 본문

알고리즘

알고리즘 풀기 (5) 숫자의 갯수 (매우 쉬움)

remagine 2017. 6. 27. 17: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. 첫번째 풀이

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package dd;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
 
/**
 * @author Arthur
 *
 */
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 D = A*B*C;
    String result = String.valueOf(D);
         
    int zero = 0;
    int one = 0;
    int two = 0;
    int three = 0;
    int four = 0;
    int five = 0;
    int six = 0;
    int seven = 0;
    int eight = 0;
    int nine = 0;
    
    for(int i = 0; i < result.length() ; i++){
        char z = result.charAt(i);
        String stringifyChar = String.valueOf(z);
        switch (stringifyChar){
        case "0" : zero++break;
        case "1" : one++break;
        case "2" : two++break;
        case "3" : three++break;
        case "4" : four++break;
        case "5" : five++break;
        case "6" : six++break;
        case "7" : seven++break;
        case "8" : eight++break;
        case "9" : nine++break;
        default : break;
        }   
        
    }
    System.out.println(zero);
    System.out.println(one);
    System.out.println(two);
    System.out.println(three);
    System.out.println(four);
    System.out.println(five);
    System.out.println(six);
    System.out.println(seven);
    System.out.println(eight);
    System.out.println(nine);
    }
 
}
 
cs


너무길다. 배열을 써보자

2. 개선한 풀이

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
/**
 * @author Arthur
 *
 */
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 D = A*B*C;
    String result = String.valueOf(D);
    int[] array = new int[10];
    
    for(int i = 0; i < result.length() ; i++){
        array[Integer.parseInt(String.valueOf(result.charAt(i)))]++;
    }
    
    for(int i = 0; i < 10 ; i++){
    System.out.println(array[i]);
    }
}
cs


3. 멋진 풀이

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
import java.util.Scanner;
/**
 * @author not me
 *
 */
public class Main {
    static int[] numCountsArr = new int[10];
 
    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
 
        int multipleNums = scan.nextInt() * scan.nextInt() * scan.nextInt();
        scan.close();
 
        while (multipleNums > 0) {
            int num = multipleNums % 10;
            numCountsArr[num]++;
            multipleNums /= 10;
        }
 
        for (int numCounts : numCountsArr) {
            System.out.println(numCounts);
        }
    }
}
cs


Comments