뭐라도 배우면 기록하자

[알고리즘 문제풀이] 하샤드 수 본문

프로그래밍언어공부/Java

[알고리즘 문제풀이] 하샤드 수

무의욕자 2017. 7. 29. 18:47

문제 출처: http://www.tryhelloworld.co.kr



문제

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

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

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


public class HarshadNumber{

public boolean isHarshad(int num){



return true;

}

  

       // 아래는 테스트로 출력해 보기 위한 코드입니다.

public static void  main(String[] args){

HarshadNumber sn = new HarshadNumber();

System.out.println(sn.isHarshad(18));

}

}




나의 답

public class HarshadNumber{ public boolean isHarshad(int num){ int first = num; int skajwl; int sum = 0; while(num>0){ skajwl = num%10; sum += skajwl; num = num/10; } if(first % sum == 0){ return true; }else{ return false; } } // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String[] args){ HarshadNumber sn = new HarshadNumber(); System.out.println(sn.isHarshad(18)); } }


여러 자리의 숫자를 자릿수대로 잘라내는 방법에 대해서 생각해볼 수 있는 문제였습니다. 입력되는 숫자를 문자열로 바꾸었다가


배열로 넣어서 index로 쪼개고 다시 숫자로 변환하여 계산하는 방법도 있습니다만(많은 분들이 이 방법으로 푸셨더군요.)


저는 조금 다른 방법으로 풀었습니다. 각 자리의 숫자는 입력받은 숫자를 10으로 나누어 봄으로써 알 수 있기 때문에 이를 코드로 구현했습니다.


변수명 생각하다가 그냥 나머지(skajwl)로 했습니다;; 

Comments