본문 바로가기
알고리즘

하샤드 수

by BottleCoffin 2022. 5. 18.

문제)

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

import java.util.*;
class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        String s = ""+x;
        String[] s1 = s.split("");
        int sum=0;
        
        for(int i=0; i<s1.length; i++){
            sum += Integer.parseInt(s1[i]);
        }
        System.out.println(sum);
        if(x%sum!=0){
            return false;
        }
        
        return answer;
    }
}

1. 매개변수로 받은 정수 x를 String 타입으로 바꾸고 split을 통해 String 배열에 넣는다.

2. for문 사용하여 입력받은 수의 각 자리수를 더해 sum에 대입

3. 정수 x를 sum으로 나누어 나머지가 0이 아닐경우 false를 리턴하고 나머지는 True를 리턴한다.

 

-> 처음에 int sum;으로 선언만 하고 실행했더니 오류(variable sum might not have been initialized)가 났다.

이유는 sum을 선언만 하고 초기화를 하지 않은 상태에서 +연산을 하려 했기 때문이었다.

 

댓글