Ex) 양의 정수 x가 하샤드 수라면 x의 자릿수 합으로 x가 나눠줘야 한다. 예를 들어 18의 자릿수의 합은1 + 8 =9이고 18은 9로 나눠 떨어지므로 하샤드 수이다. Harshad함수는 양의 정수 n을 매개 변수로 받는다. 입력받은 n이 하샤드 수인지 아닌지 판단하는 함수를 완성하라.
<hide/>
package javaStudy;
public class HarshadNumber {
public boolean isHarshad(int num) {
int su = num;
int sum = 0;
boolean isHarshad = false;
while( su > 0) {
sum += su % 10;
su = su / 10;
}
if(num % sum == 0)
isHarshad = true;
return isHarshad;
}
public static void main(String[] args) {
HarshadNumber sn = new HarshadNumber();
System.out.println(sn.isHarshad(50));
System.out.println(sn.isHarshad(14));
System.out.println(sn.isHarshad(11));
System.out.println(sn.isHarshad(12));
}
}
Note) 실행 결과
- 14라는 값이 들어왔을 때, 1과 4라는 값을 얻어와야한다.
- su 값이 14라면 su % 10의 결과는 4이다.
- sum = 4 , su = 1이 된다.
- 다시 반복하면 su % 10 = 1이 되고 sum = 4 + 1이 된다.
- su / 10 = 1 / 10은 0 이므로 반복문이 종료된다.
- 자릿수의 합 구하는 게 끝나면 자릿수의 합으로 나눠 떨어지는지 확인하면 된다.
- if(num % sum == 0) isHarshad = true;
-> 코드를 실행해서 나눠떨어지면 하샤드 수이므로 isHarshad= true를 수행하면 된다.
- 자릿수의 합을 구할 때 다른 방법으로 구할 수도 있다.
- Java가 제공하는 Integer클래스의 toString메서드를 이요해서 int 값을 String 값으로 바꿔줄 수 있다.
- chatAt()메서드는 index에 해당하는 문자 하나만 얻어낼 수 있다.
<hide/>
package javaStudy;
public class HarshadNumber {
public boolean isHarshad(int num) {
String str = Integer.toString(num);
int sum = 0;
boolean isHarshad = false;
for(int i = 0; i < str.length();++i) {
sum += Integer.parseInt(str.charAt(i) + "");
}
if(num % sum == 0)
isHarshad = true;
return isHarshad;
}
public static void main(String[] args) {
HarshadNumber sn = new HarshadNumber();
System.out.println(sn.isHarshad(50));
System.out.println(sn.isHarshad(14));
System.out.println(sn.isHarshad(11));
System.out.println(sn.isHarshad(12));
}
}
'Java > 모두의 자바' 카테고리의 다른 글
Chapter 10-62 최댓값과 최솟값 (0) | 2022.02.13 |
---|---|
Chapter 10-61 정수 내림차순으로 배치하기 (0) | 2022.02.13 |
Chapter 10-60 삼각형 출력하기 (0) | 2022.02.13 |
Chapter 10-59 문자열을 내림차순으로 배치하기 (0) | 2022.02.13 |
Chapter 10-58 서울에서 김서방 찾기 (0) | 2022.02.13 |