https://programmers.co.kr/learn/courses/30/lessons/12947
코딩테스트 연습 - 하샤드 수
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하
programmers.co.kr
= 문제 =
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
= 제한 조건 =
x는 1 이상, 10000 이하인 정수입니다
= 예시 =
입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.
입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.
입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.
입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.
= 해설 기본틀 =
class Solution {
public boolean solution(int x) {
boolean answer = true;
return answer;
}
}
= 정답 =
class Solution {
public boolean solution(int x) {
int sum = 0; //1#단계
int n = x;
while(n>=1){
sum+=n%10; //#2단계
n/=10; //#3단계
}
if(x%sum==0){ //#4단계
return true;
}else{
return false;
}
}
}
= 실행 결과 =
= 나의 해설 =
#1단계 : 우선 하샤드 수인지 확인 할 수 있는 모든 자리 수의 합을 나타내는 변수와, x를 n 변수로 나타냄
#2단계 : n>=1보다 작을 때 조건으로, n이 0보다 작아지면 while문이 끝나게 하였고,
sum에 n%10을 한 n의 일의 자리 숫자를 더한다
#3단계 : 그리고, n을 또 10의 자리 숫자로 나눈다. n이 0보다 작아지면 알아서 break;
#4단계 : 하샤드 수인지 아닌지 확인하는 if구문
'프로그래머스 코딩테스트 > Java' 카테고리의 다른 글
[프로그래머스][ 자바 ] 단계 : 콜라츠 추측 (0) | 2022.03.28 |
---|---|
[프로그래머스][자바] 1단계 : 핸드폰 번호 가리기 (0) | 2022.03.23 |
[프로그래머스][자바] 1단계 : 행렬의 덧셈 (0) | 2022.03.22 |
[프로그래머스][자바] 1단계 : x만큼 간격이 있는 n개의 숫자 (0) | 2022.03.09 |
[프로그래머스][자바] 1단계 : 직사각형 별찍기 (0) | 2022.03.08 |