프로그래머스에서 본 예제를 자바로 구현해봤습니다. 더 좋은 풀이 있으면 공유하시지요..

1. 문제

https://programmers.co.kr/learn/challenge_codes/130

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.

Harshad함수는 양의 정수 n을 매개변수로 입력받습니다. 이 n이 하샤드수인지 아닌지 판단하는 함수를 완성하세요.

예를들어 n이 10, 12, 18이면 True를 리턴 11, 13이면 False를 리턴하면 됩니다.


2. 코드

  1. package Test;
  2.  
  3. public class HarshadNumber {
  4. public boolean isHarshad(int num) {
  5. String numStr = num + "";
  6. int sum = 0;
  7. for (int inx = 0; inx < numStr.length(); inx++) {
  8. sum += Integer.parseInt(numStr.charAt(inx) + "");
  9. }
  10. if (num % sum == 0)
  11. return true;
  12. else
  13. return false;
  14. }
  15.  
  16. public static void main(String[] args) {
  17. HarshadNumber sn = new HarshadNumber();
  18. System.out.println("10="+sn.isHarshad(10));
  19. System.out.println("11="+sn.isHarshad(11));
  20. System.out.println("12="+sn.isHarshad(12));
  21. System.out.println("13="+sn.isHarshad(13));
  22. System.out.println("18="+sn.isHarshad(18));
  23. }
  24. }