728x90
👀 문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
🚥 제한사항
x는 1 이상, 10000 이하인 정수입니다.
📌 입출력 예
arr | return |
10 | true |
12 | true |
11 | false |
13 | false |
입출력 예 설명
입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.
입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.
입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.
입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.
🤨 고민
문제의 이해
하샤드 수란 뭐지?
자리수의 합계를 어떻게 얻을까?
💻 코딩
1차 제출.
class Solution {
public boolean solution(int x) {
boolean answer = true;
// int to String
String temp = String.valueOf(x);
// 합계 데이터 저장할 sum 변수 선언
int sum = 0;
// x의 길이만큼 도는 for
for (int i = 0; i < temp.length() ; i++) {
// 자리수에 값을 받으면 ASCII 코드로 나옴 -48처리하여 정수로 변환
sum += temp.charAt(i)-48;
}
// System.out.println(" sum : " + sum);
// x를 sum으로 나누어 0인 경우 하샤드 수(true),
// 아닌경우 하샤드 수 아님(false)
if (x % sum != 0) answer = false;
return answer;
}
}
📝 채점
⏱ 소요시간 및 후기
소요 시간 약 20분.
정말 헤아릴 수 없는 수가 많은 것 같다.
하샤드 수 란 무엇인지 알게되었고,
charAt으로 각 자리를 파싱하니 아스키 코드로 반환되어 그걸 처리하는 방법을 알게되었다.
728x90
'Programmers > Level1' 카테고리의 다른 글
[Programmers Level 1] 제일 작은 수 제거하기 정답 및 문제 풀이 (0) | 2021.06.04 |
---|---|
[Programmers Level 1] 로또의 최고 순위와 최저 순위 정답 및 문제 풀이 (0) | 2021.06.01 |
[Programmers Level 1] 3진법 뒤집기 정답 및 문제 풀이 (0) | 2021.05.30 |
[Programmers Level 1] [1차] 다트게임 정답 및 문제 풀이(카카오 블라인드 코딩 테스트) (0) | 2021.05.26 |
[Programmers Level 1] 나누어 떨어지는 숫자 배열 정답 및 문제풀이 (0) | 2021.05.24 |