문제)
양의 정수 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을 선언만 하고 초기화를 하지 않은 상태에서 +연산을 하려 했기 때문이었다.
댓글