[Beakjoon] 1차원 배열문제 2577번: 숫자의 개수

2019. 7. 14. 21:42
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
import java.util.*;
 
public class Main {
    public static void main (String args[]) {
    
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = scan.nextInt();
        
        int sum = a*b*c;
        String same = " " + sum; //문자로 형변환
        String numbers[] = new String[same.length()]; //문자로 형변환 한 만큼 크기의 배열 생성
    
        for(int i=0; i<same.length(); i++) {
            numbers[i] = String.valueOf(same.charAt(i));
        }
        
        int one = 0, two=0, three=0, four=0, five=0, six=0, seven=0, eight=0, nine=0, ten=0, zero=0;
        
        for(int i=0; i<same.length(); i++) {
            switch(numbers[i]){
            case "0"++one;
                      break;
            case "1"++two;
              break;
            case "2"++three;
              break;
            case "3"++four;
              break;
            case "4"++five;
              break;
            case "5"++six;
              break;
            case "6"++seven;
              break;
            case "7"++eight;
              break;
            case "8"++nine;
              break;
            case "9"++zero;
              break;
                }
            }
        
        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);
        System.out.println(zero);
    
    }
}
 
 

String same = " " + sum; //문자로 형변환

numbers[i] = String.valueOf(same.charAt(i));

 

이번 문제를 풀면서 포인트라고 생각했던 두 가지를 뽑아보았다. 형변환에 관한 것이다.

 

문제를 해결할 시에 결과에 따른 숫자들을 문자로 형변환하여 String 배열에 넣고 case별로 카운팅을 시도했다. 그런데 이제와서 보면 그냥 char 배열을 써도 무방할 것으로 보이나 우선 해결한 문제이므로 알고 넘어가겠다.

 

int -> String 변환시 : String (변수명) = " " + (int형 변수);

 

또한 다른 형변환을 사용하였다.

여기서 numbers 배열은 String 타입이므로, same.charAt(i)는 char 타입이 되므로 타입이 맞지 않아 삽입할 수 없었다. (사실 여기서 char 형 배열로 선언했다면 굳이 형변환을 해주지 않아도 되긴 했었다만..)

그래서 String 타입으로 char를 형변환해주고자, String.valueOf()를 사용하였다. 다음에 다른 형을 String 형으로 변환할 때 잘 쓰일 듯 하니 공부한 셈 치고 적어놓는다.

 

알고리즘을 풀면서 아직은 효율적인 방법을 생각하기 어려워하는 내 모습을 발견하고 있지만,

다른 사람들의 코드를 참고하면서 문제를 푸는 것만으로 그치치 않고 다양하게 발전해나가야겠다.

BELATED ARTICLES

more