JAVA/Argorithm Test

# Level 1 - 하샤드 수

skysoo1111 2020. 12. 4. 14:52

[문제]

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.

 

자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

 

 

[내 풀이]

각 자릿수를 추출하는 여러 방법이 있겠지만 나는 아래 방법을 사용했다.

 

제곱 함수를 이용하여 몫과 나머지를 이용하여 자릿수를 추출하였다.

 

이렇게 푼 이유는 몫과 나머지를 이용한 자릿수 검출은 코딩 테스트 문제에서 응용할 수 있는 문제들이 심심찮게 보였던거 같아서 한번 되뇌이기 위해서이다.

class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        int start = x;
        int sum = 0;
        // 각 자릿수 추출
        String s = String.valueOf(x);
        int length = s.length();
        int[] num = new int[length];
        for(int i=length-1;i>=0;i--) {
            int p = x / (int) Math.pow(10,i);
            int c = x % (int) Math.pow(10,i); 
            num[length-i-1] = p;
            x = c;
        }
        // 각 자릿수 합
        for(int i=0;i<length;i++){
            sum += num[i];
        }
        // 하샤드 수인지 검증
        if ((start%sum) != 0)
            answer = false;
        return answer;
    }
}

 

이제 Level 1 문제는 거의 다 풀었다. Level 2로 넘어가야지

'JAVA > Argorithm Test' 카테고리의 다른 글

# Level 2 - 프린터  (0) 2020.12.09
# Level 2 -124 나라의 숫자  (0) 2020.12.08
# Level 1 - 시저 암호  (0) 2020.11.23
#Level 1 - 소수 찾기  (0) 2020.11.20
# Level 1 - 문자열 내마음대로 정렬  (0) 2020.11.17