728x90
반응형
문제
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
| x | return |
| 10 | true |
| 12 | true |
| 11 | false |
| 13 | false |
▶ 제한사항
- x는 1 이상, 10000 이하인 정수입니다.
Solution 코드
class Solution {
public boolean solution(int x) {
int harshadNumber=0;
int temp=x;
//자릿수 합 구하기
while(temp!=0){
harshadNumber+=temp%10;
temp/=10;
}
if(x%harshadNumber==0)
return true;
else
return false;
}
}
- 자릿수의 합을 구하기 위해서는 x를 10으로 나눈 나머지 값을 harshadNumber 변수에 저장하고, x의 값을 10으로 나눈 값으로 나머지 값을 구하는 것을 반복한다. 만약 18이라면 18을 10으로 나눈 나머지인 8이 저장되고, 10으로 나눈 값인 1으로 연산을 반복한다. 1을 10으로 나눈 나머지인 1을 더하면 자릿수 합은 9이다.
- x를 자릿수 합을 모두 더한 harshadNumber 값으 나누었을 때의 나머지가 0이라면 harshadNumber는 하샤드 수이다. 18을 9로 나누었을 때의 나머지 값은 0이기 때문에 하샤드 수임을 의미한다.
728x90
반응형
'문제 > JAVA' 카테고리의 다른 글
| [JAVA] 문자열을 정수로 바꾸기 보완 (0) | 2023.06.05 |
|---|---|
| [JAVA] 정수 제곱근 판별 (0) | 2023.05.30 |
| [JAVA] 문자열을 정수로 바꾸기 (2) | 2023.05.29 |
| [JAVA] 문자열 내 p와 y의 개수 (0) | 2023.05.29 |
| [JAVA] 자연수 뒤집어 배열로 만들기 (0) | 2023.05.29 |