반응형
문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
- x는 1 이상, 10000 이하인 정수입니다.
생각
몇 번만 수를 대입해보면 금방 풀리는 문제이다. 27을 예로 들어보자, 각 자리수의 합은 2 + 7 = 9이고, 27은 9로 나누어 떨어지므로 27은 하샤드 수이다. 각 자릿수를 split해서 더해주고 그 수를 원래의 수와 나눠서, 나누어 떨어진다면 true를 아니라면 false를 반환해주면 된다.
int형은 split이 안되기 때문에 String형으로 바꿔서 split을해주고 Integer.parseInt() 를 사용해 정수로 바꿔주었다.
코드
String x1은 정수형 x를 String로 바꿔준 것, x2는 x1을 split하여 배열에 넣어준 것이다.
이를 Integer.parseInt()를 이용해 int형 배열인 x3에 넣어주고 문제를 푼다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class Solution {
public boolean solution(int x) {
boolean answer = true;
String x1 = "" + x;
String[] x2 = x1.split("");
int[] x3 = new int[x2.length];
for(int i=0; i<x2.length; i++) {
x3[i] = Integer.parseInt(x2[i]);
}
if(x%Arrays.stream(x3).sum()==0) {
answer = true;
} else answer = false;
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
반응형
'알고리즘 > 코딩 - 프로그래머스' 카테고리의 다른 글
[Java][프로그래머스][Level 1] x만큼의 간격이 있는 n개의 숫자 (0) | 2019.05.05 |
---|---|
[Java][프로그래머스][Level 1] 핸드폰 번호 가리기 (0) | 2019.05.03 |
[Java][프로그래머스][Level 1] 콜라츠 추측 (2) | 2019.05.01 |
[Java][프로그래머스][Level 1] 최대공약수와 최소공배수 (1) | 2019.04.30 |
[Java][프로그래머스][Level 1] 제일 작은 수 제거하기 (0) | 2019.04.12 |