▶ 문제
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
★ 풀이방식
먼저 하샤드 수가 뭔지 몰라서 인터넷 검색을 해봤다. 조금 복잡하다...
공식은 첫 번째로 x의 각 자릿수를 구한다. 이 부분은 String Array를 만들어서 split 하여
for문을 이용해 num 변수에 하나씩 분리했다. 이때 Array나 배열에 특화된
향상된 for문을 활용하여 분리했다. 그 후에 x의 각 자릿수를 더한 값을 구한 다음에
x를 그 구한 값으로 나눠서 나눠지면 true, 아니라면 false를 반환하는 것이다.
▶ 소스코드
class Solution {
public boolean solution(int x) {
boolean answer = true;
String[] Arr = String(x.split(""));
int sum = 0;
for(String num : Arr){
sum += Integer.parseInt(num);
}
if(x % sum == 0) {
answer = true;
} else {
answer = false;
}
return answer;
}
}
- 실행 시 String Array에서 오류가난다. 아무래도 String 변수에 먼저 담지않고 한번에 처리하려 했으나 안되는거같다. 먼저 String 변수에 담은 후에 Array에 옮겨야 될거같다.
▶ 수정된 소스코드
class Solution {
public boolean solution(int x) {
boolean answer = true;
String str = String.valueOf(x);
String[] Arr = str.split("");
int sum = 0;
for(String num : Arr){
sum += Integer.parseInt(num);
}
if(x % sum == 0) {
answer = true;
} else {
answer = false;
}
return answer;
}
}
- String 변수에 먼저 담은 후에 split을 진행하니 오류없이 잘 진행되는 모습이다. 이걸 통해 String Array에는 String 변수에 먼저 담은 후에 사용해야 된다는걸 깨달았다.
'JAVA 알고리즘' 카테고리의 다른 글
(JAVA) 실제 정수들의 합을 구하여 return 하도록 함수 완성하기 (0) | 2024.09.19 |
---|---|
(JAVA) 단어 s의 가운데 글자를 반환하는 함수 (1) | 2024.09.19 |
(JAVA) 콜라츠 추측 (0) | 2024.09.15 |
(JAVA) 두 정수 사이에 속한 모든 정수의 합을 리턴하는 함수 (1) | 2024.09.14 |
(JAVA) 각 자릿수를 큰것부터 작은 순으로 정렬한 정수 리턴 받기 (1) | 2024.09.14 |