[문제 설명]
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은
1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 n을
입력받아 n이 하샤드 수인지 아닌지 검사하는 함수, solution을
완성해주세요.
제한 조건
l n은 1 이상, 10000 이하인 정수입니다.
[나의 풀이]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Solution {
public boolean solution(int x) {
int sum = 0;
int tmp = x;
if(x>=1 && x<=10000){
while(x!=0){
sum += x%10;
x /= 10;
}
}
return tmp%sum==0;
}
}
|
[다른 사람의 풀이]
(1) chars()로 분리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import java.util.function.IntConsumer;
public class HarshadNumber{
private int sum = 0;
public boolean isHarshad(int num){
sum = 0;
Integer.toString(num).chars().forEach(c -> sum += c - '0');
return num % sum == 0;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
HarshadNumber sn = new HarshadNumber();
System.out.println(sn.isHarshad(18));
}
}
|
(2) int ->
String -> int
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class HarshadNumber{
public boolean isHarshad(int num){
String[] temp = String.valueOf(num).split("");
int sum = 0;
for (String s : temp) {
sum += Integer.parseInt(s);
}
if (num % sum == 0) {
return true;
} else {
return false;
}
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
HarshadNumber sn = new HarshadNumber();
System.out.println(sn.isHarshad(18));
}
}
|
댓글 없음:
댓글 쓰기