본문 바로가기
Project/Algorithm

[백준 알고리즘] 2557번(숫자의 개수)

by 도낙원 2017. 8. 3.
반응형

[백준 알고리즘]




이번 문제도 그렇게 어려운 문제는 아닌 것 같습니다.


저는 두 가지 방법으로 풀었습니다.


1. 세 개의 수를 모두 곱하고 난 뒤 String 형으로 형 변환을 해서 다시 배열에 각각 집어 넣었습니다.

그렇게 해서 각 수를 구했습니다. 


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
import java.util.Scanner;
 
 
public class Beak2577 {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        int[] array = new int[3];
        int result = 0;
        for(int i=0;i<3;i++){
            array[i] = sc.nextInt();
        }
        result = array[0* array[1* array[2];
        
        String check = Integer.toString(result); // String 형으로 형 변환
        char[] number = check.toCharArray(); // 각 배열에 저장
        int[] arr_result = new int[number.length];
        
        for(int i=0;i<number.length;i++){
            arr_result[number[i]-'0']++; // char형에 -'0'을 하면 int형이 된다.
        }
        for(int i=0;i<arr_result.length;i++)
            System.out.println(arr_result[i]);
    }
}
 
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
import java.util.Scanner;
 
public class Beak2577 {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        int[] array = new int[3];
        int[] result_arr = new int[10];
        int result = 0;
        for (int i = 0; i < 3; i++) {
            array[i] = sc.nextInt();
        }
        result = array[0* array[1* array[2];
 
        while(result>0){
            result_arr[result%10]++;
            result/=10;
        }
        for (int i = 0; i < result_arr.length; i++) {
            System.out.println(result_arr[i]);
        }
    }
}
 
cs


이렇게 짜게 되면 코드도 짧고 런타임 에러는 안나게 됩니다.


다 하고 다른 사람과 비교 해본 결과 전부 비슷하게 과제를 해결했습니다.



반응형
사업자 정보 표시
난길샵 | 박현숙 | 경상북도 성주군 월항면 수죽길 98길 | 사업자 등록번호 : 256-07-01668 | TEL : 010-9909-8420 | Mail : skr04@naver.com | 통신판매신고번호 : 제2020-경북성주-52호 | 사이버몰의 이용약관 바로가기

댓글