본문 바로가기
Algorithm

[Java&알고리즘] 하샤드 수 (Level 1)

by GoodDayDeveloper 2023. 3. 3.
반응형

 

프로그래머스의 알고리즘 문제 및 풀이에 대해 차근차근 포스팅하려합니다.

 

저도 초보자이기도하고 알고리즘에 쉽게 다가갈 수 없는 부분들이 많기 때문에

최대한 알기 쉽게 정리해보려하고 알고리즘을 어려워하는 분들에게 도움이 되었으면 합니다.

 

많이 공유되고 토론이 될 수 있는 공간이 되었으면 좋겠습니다.

 

 

 

 

 

 

 

환경

언어 : 자바

단계 : 레벨 1단계 (입문자용)

정답률 : 86%

 

 

 

 

 

 

제목 

 

하샤드 수

 

 

 
 

 

 

문제 설명 및 코드

 

 

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

 

 

 

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

 

 

 

1
2
3
4
5
6
7
class Solution {
    public boolean solution(int x) {
        boolean answer = true;
       
        return answer;
    }
}
cs

 

 

 

 

입출력 예

 

 

n return
10 true
12 true
11 false
13 false

 

 

입출력 예 설명

 

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

 

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

 

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

 

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

 

 

 

 

 

 

 

 

 

반응형

 

 

 

 

 

 

 

 

 

 

 

 

문제 정답 코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        int resultVal = 0
        String strList = Integer.toString(x);
        
        for(int i=0; i<strList.length(); i++){
            resultVal += strList.charAt(i) - '0';
        }
        
        if(x%resultVal != 0){
            answer = false;
        }
        
        return answer;
    }
}
cs

 

 

결과값을 담을 resultVal 변수를 선언해준 다음,

 

하나하나 글자를 담기 위해 String 변수로 변경해줍니다. (strList)

 

strList를 반복문을 돌려 하나하나의 값들을 resultVal에 ㄷ마아준 다음

 

x와 resultVal의 나머지가 0이 아닐때 false를 선언해주었습니다.

 

 

 

 

 

 

 

 

다른사람 풀이

 

 

 

1
2
3
4
5
6
class Solution {
    public boolean solution(int x) {
        int sum = String.valueOf(x).chars().map(ch -> ch - '0').sum();
        return x % sum == 0;
    }
}
cs

 

 

람다식의 해결방식입니다.

 

문자열로 변환한 것을 

 

char 타입으로 변환하여

 

숫자로 변경해준 값을

 

합쳐줍니다.

 

그리고 마지막 return 값에 x와 합친 sum 변수의 나머지값이 0인것을 리턴해주는 코드였습니다.

 

 

 

 

 

 

반응형

댓글