[문제]
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
[내 풀이]
각 자릿수를 추출하는 여러 방법이 있겠지만 나는 아래 방법을 사용했다.
제곱 함수를 이용하여 몫과 나머지를 이용하여 자릿수를 추출하였다.
이렇게 푼 이유는 몫과 나머지를 이용한 자릿수 검출은 코딩 테스트 문제에서 응용할 수 있는 문제들이 심심찮게 보였던거 같아서 한번 되뇌이기 위해서이다.
class Solution {
public boolean solution(int x) {
boolean answer = true;
int start = x;
int sum = 0;
// 각 자릿수 추출
String s = String.valueOf(x);
int length = s.length();
int[] num = new int[length];
for(int i=length-1;i>=0;i--) {
int p = x / (int) Math.pow(10,i);
int c = x % (int) Math.pow(10,i);
num[length-i-1] = p;
x = c;
}
// 각 자릿수 합
for(int i=0;i<length;i++){
sum += num[i];
}
// 하샤드 수인지 검증
if ((start%sum) != 0)
answer = false;
return answer;
}
}
이제 Level 1 문제는 거의 다 풀었다. Level 2로 넘어가야지
'JAVA > Argorithm Test' 카테고리의 다른 글
# Level 2 - 프린터 (0) | 2020.12.09 |
---|---|
# Level 2 -124 나라의 숫자 (0) | 2020.12.08 |
# Level 1 - 시저 암호 (0) | 2020.11.23 |
#Level 1 - 소수 찾기 (0) | 2020.11.20 |
# Level 1 - 문자열 내마음대로 정렬 (0) | 2020.11.17 |