양의 정수 x
가 하샤드 수이려면 x
의 자릿수의 합으로 x
가 나누어져야 한다. 예를 들어, 18의 자릿수 합은 1 + 8 = 9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수이다. 자연수 x
를 입력받아 x
가 하샤드 수인지 아닌지 검사하는 함수, solution
을 완성해보자.
이 문제를 해결하기 위해 다음과 같은 단계를 수행할 것이다:
x
를 문자열로 변환하여 각 자릿수를 분리한다.x
가 자릿수의 합으로 나누어지는지 확인한다.다음은 위의 접근 방식을 자바 코드로 구현한 것이다:
import java.util.ArrayList;
class Solution {
public boolean solution(int x) {
boolean answer = true;
char[] str = Integer.toString(x).toCharArray();
int sum = 0;
for (int i = 0; i < str.length; i++) {
sum += Character.getNumericValue(str[i]);
}
if (x % sum != 0) answer = false;
return answer;
}
}
char[] str = Integer.toString(x).toCharArray();
Integer.toString(x)
: 입력받은 정수 x
를 문자열로 변환한다. 예를 들어, x
가 18
이라면 이 부분의 결과는 "18"
이라는 문자열이 된다..toCharArray()
: 변환된 문자열을 문자 배열로 변환한다. "18"
문자열은 ['1', '8']
이라는 문자 배열로 변환된다.이 과정에서 우리는 정수의 각 자릿수를 개별 문자로 분리하여 배열에 저장하게 된다.
int sum = 0;
for (int i = 0; i < str.length; i++) {
sum += Character.getNumericValue(str[i]);
}
Character.getNumericValue(str[i])
: char
타입의 문자를 정수로 변환한다. 예를 들어, str[i]
가 '1'
이라면 1
이라는 정수로 변환된다.sum
변수에 합산한다.이 부분에서 Character.getNumericValue
메서드를 사용하여 char
타입의 문자를 간편하게 정수로 변환할 수 있다.
if (x % sum != 0) answer = false;
x
가 자릿수의 합 sum
으로 나누어 떨어지지 않으면 answer
를 false
로 설정한다.answer
는 true
로 유지된다.이 과정을 통해 최종적으로 입력받은 정수 x
가 하샤드 수인지 아닌지를 확인할 수 있다.
이 블로그 포스트에서는 자바로 하샤드 수를 검사하는 방법을 살펴보았다. Character.getNumericValue
메서드를 사용하여 char
타입의 문자를 쉽게 정수로 변환할 수 있었으며, 이를 통해 문제를 효과적으로 해결할 수 있었다.