본문 바로가기

프로그래머스 코딩테스트/Java

[프로그래머스][자바] 1단계 : 하샤드 수

728x90
728x90

https://programmers.co.kr/learn/courses/30/lessons/12947

 

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

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

programmers.co.kr


= 문제 =

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 

예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 

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

 

= 제한 조건 =

x는 1 이상, 10000 이하인 정수입니다

 

= 예시 =

입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.

입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.

입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.

입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.

 

= 해설 기본틀 =

class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        return answer;
    }
}

= 정답 =

class Solution {
    public boolean solution(int x) {
        
        int sum = 0; //1#단계
        int n = x;
        
        while(n>=1){ 
            sum+=n%10; //#2단계
            n/=10; //#3단계
        }
        if(x%sum==0){ //#4단계
            return true;
        }else{
            return false;
        }
    }
}

= 실행 결과 = 

= 나의 해설 =

#1단계 : 우선 하샤드 수인지 확인 할 수 있는 모든 자리 수의 합을 나타내는 변수와, x를 n 변수로 나타냄

#2단계 : n>=1보다 작을 때 조건으로, n이 0보다 작아지면 while문이 끝나게 하였고,

           sum에 n%10을 한 n의 일의 자리 숫자를 더한다

#3단계 : 그리고, n을 또 10의 자리 숫자로 나눈다. n이 0보다 작아지면 알아서 break;

#4단계 : 하샤드 수인지 아닌지 확인하는 if구문

 

 

728x90