WORK/Java

[프로그래머스/Java] 하샤드 수

Justin Mendes 2022. 4. 10. 16:11

문제 설명

양의 정수 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package level_1;
 
 
public class harshadNumber {
 
static class Solution {
public boolean solution(int x) {
boolean answer = true;
 
int cheonN, baekN, sipN, illN;
 
if (x >= 10 && x < 100) {
 
sipN = x / 10;
illN = x - (x / 10* 10;
 
if (x % (sipN + illN) == 0) {
answer = true;
else {
answer = false;
}
}
 
if (x >= 100 && x < 1000) {
baekN = x/100;
sipN = (x - (x/100* 100)/10 ; 
illN = x - (x/100* 100 - ((x - (x/100* 100)/10)*10;
 
if (x % (baekN + sipN + illN) == 0) {
answer = true;
else {
answer = false;
}
}
 
if (x >= 1000 && x < 10000) {
cheonN= x/1000;
baekN = (x - cheonN*1000)/ 100 ; 
sipN = (x -cheonN*1000 -baekN*100)/10 ; 
illN = x - cheonN*1000 - baekN*100 - sipN*10;
 
if (x % (cheonN+baekN + sipN + illN) == 0) {
answer = true;
else {
answer = false;
}
}
 
 
 
 
return answer;
}
}
 
public static void main(String[] args) {
// TODO Auto-generated method stub
 
Solution sol = new Solution();
sol.solution(108);
 
}
 
}
cs

 

아직 실력이 부족해서 하드코딩으로 작성했는데

다른 분들의 풀이 보니까 쉽게 쉽게 하신 분도 있어서 신기했다

나중에 간단하고 정확하게 풀어봐야징