📘문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/12947
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 제한조건
- x는 1 이상, 10000 이하인 정수입니다.
💡 개념 설명
정수 x가 주어질 때, x가 각 자리 숫자의 합으로 나누어지는지 (즉, x % 자리수 합 == 0) 확인하는 문제입니다.
1. 변수 초기화
- b를 0으로 초기화하여 각 자리 숫자의 합을 저장할 변수로 사용합니다.
- i에 x 값을 복사하여 원래 값은 유지하면서 자리수를 하나씩 분리할 준비를 합니다.
2. 각 자리 숫자 분리 및 합산
- while 반복문을 이용해 i가 0보다 클 때까지 반복합니다.
- i % 10으로 마지막 자리 숫자를 구해 b에 더합니다.
- i = i / 10으로 마지막 자리 숫자를 제거하여 다음 자리 숫자를 처리합니다.
3. 나누어 떨어지는지 확인
- 반복문 종료 후, b에는 x의 각 자리 숫자들의 합이 저장되어 있습니다.
- x % b == 0 조건을 검사하여 x가 b로 나누어 떨어지면 true, 아니면 false를 반환합니다.
4. 결과 반환
- 조건에 맞게 true 또는 false 값을 반환해 문제의 답을 제공합니다.
📎 입출력 예시

📎 코드
class Solution {
public boolean solution(int x) {
int b = 0;
int i = x;
while (i > 0) {
b += i % 10;
i = i / 10;
}
return x % b == 0;
}
public static void main(String[] args) {
Solution s = new Solution();
System.out.println("10 : " + s.solution(10));
System.out.println("12 : " + s.solution(12));
System.out.println("11 : " + s.solution(11));
System.out.println("13 : " + s.solution(13));
}
}
📎 결과

'Java' 카테고리의 다른 글
| [Java] 코딩 13 - 프로그래머스 기출 문제(JAVA) / 콜라츠 추측 / Day 12 (2) | 2025.07.11 |
|---|---|
| [Java] 코딩 12 - 프로그래머스 기출 문제(JAVA) / 두 정수 사이의 합 / Day 11 (2) | 2025.07.10 |
| [Java] 코딩 10 - 프로그래머스 기출 문제(JAVA) / 정수 내림차순으로 배치하기 / Day 9 (0) | 2025.07.08 |
| [Java] 코딩 9 - 프로그래머스 기출 문제(JAVA) / 정수 제곱근 판별 / Day 8 (1) | 2025.07.07 |
| [Java] 코딩 8 - 프로그래머스 기출 문제(JAVA) / 문자열을 정수로 만들기 / Day 7 (0) | 2025.07.06 |