JAVA #6 : 10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하기

반응형

10~1000까지 각 숫자 분해하여 곱하기의 전체 합 구하시오

예) 48는 4와 8로 나뉘고 48 -> 4×8 = 32 와 같은 방법으로 계산한다.

이 문제에서 가장 중요한 포인트는 각 숫자를 분해하는 것으로 보인다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public static void main(String[] args) {
        
        int[] list = new int[1000]; // 1000개의 array 생성
        int sum = 0;
        int multi = 1;
 
        for(int x = 10; x < list.length+1; x++){
            char[] c = (""+x).toCharArray(); 
            //10부터 1000까지 숫자를 ""+x 형식으로 char로 형변환해 배열에 저장
                for(int i=0;i<c.length; i++) {
                    multi = multi * Character.getNumericValue(c[i]); 
                    }
                sum += multi;
                multi = 1//1로 재정의하지 않을 시 계산 값은 0이 나온다
                }
        System.out.println("정답 :" + sum);
    }
cs

 

숫자를 문장열로 문자열을 char형으로 변환하는 과정이 담겨있다.

다음을 실행한 답은 아래와 같다.

 

알게된 것들

toCharArray(); : 문자열을 char형으로 분해하여 배열에 저장한다. 위에서 사용한 방법은 10부터 시작하는

x값을 ( " "+x ) 형태의 문자열로 변환하고 toCharArray()로 분해해서 저장한다. 

getNumericValue(); : 숫자형태의 유니코드, 앞에서 char형으로 변환한 숫자(문자형)을 정수형 숫자로 변화하는 메서드.

반응형