https://programmers.co.kr/learn/courses/30/lessons/12947?language=java 

 

코딩테스트 연습 - 하샤드 수

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

programmers.co.kr

 

 

문제 분석

- while문을 통해 각 자리수의 합을 전부 더한다. (몫-/과 나머지-%를 활용)

- 모든 자리수를 더한 값을 x로 나누었을 때 나누어 떨어진다면 true, 아니면 false를 반환한다.

 

 

문제 풀이

1. while문을 통해 몫이 1보다 작을 때까지 반복한다.

2. 만약 몫이 1보다 작은 경우는 x를 각 자리의 합으로 나누고, 나누어 떨어지지 않을 경우 false를 반환한다.

3. while문 반복을 통해 나머지를 각 자리의 합에 더하고, 몫을 10으로 나누어 해당 숫자를 몫으로 처리한다.

class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        int q = x, sum = 0;
        
        while(true){
            if(q<1){
                if(x%sum!=0)
                    answer = false;
                break;
            }
            sum += q % 10;
            q /= 10;
        }
        
        return answer;
    }
}

 

 

https://github.com/SOEUN2/Algorithm

'Algorithm > programmers' 카테고리의 다른 글

programmers 콜라츠 추측  (0) 2022.01.09
programmers 평균 구하기  (0) 2022.01.09
programmers 핸드폰 번호 가리기  (0) 2022.01.09
programmers 상위 n개 레코드  (0) 2021.12.31
programmers 여러 기준으로 정렬하기  (0) 2021.12.31