자바로 하샤드 수 검사하기

coldrice99·2024년 8월 8일
0

문제 설명

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

해결 방법

이 문제를 해결하기 위해 다음과 같은 단계를 수행할 것이다:

  1. 정수 x를 문자열로 변환하여 각 자릿수를 분리한다.
  2. 각 자릿수를 정수로 변환하여 합산한다.
  3. 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;
    }
}

코드 설명

1. 정수 -> 문자열 -> 문자 배열 변환

char[] str = Integer.toString(x).toCharArray();
  • Integer.toString(x): 입력받은 정수 x를 문자열로 변환한다. 예를 들어, x18이라면 이 부분의 결과는 "18"이라는 문자열이 된다.
  • .toCharArray(): 변환된 문자열을 문자 배열로 변환한다. "18" 문자열은 ['1', '8']이라는 문자 배열로 변환된다.

이 과정에서 우리는 정수의 각 자릿수를 개별 문자로 분리하여 배열에 저장하게 된다.

2. 자릿수의 합 계산

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 타입의 문자를 간편하게 정수로 변환할 수 있다.

3. 하샤드 수 여부 확인

if (x % sum != 0) answer = false;
  • x가 자릿수의 합 sum으로 나누어 떨어지지 않으면 answerfalse로 설정한다.
  • 그렇지 않으면 answertrue로 유지된다.

이 과정을 통해 최종적으로 입력받은 정수 x가 하샤드 수인지 아닌지를 확인할 수 있다.

결론

이 블로그 포스트에서는 자바로 하샤드 수를 검사하는 방법을 살펴보았다. Character.getNumericValue 메서드를 사용하여 char 타입의 문자를 쉽게 정수로 변환할 수 있었으며, 이를 통해 문제를 효과적으로 해결할 수 있었다.


문제 출처

profile
서두르지 않으나 쉬지 않고

0개의 댓글