뭐라도 배우면 기록하자
[알고리즘 문제풀이] 하샤드 수 본문
문제 출처: 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)로 했습니다;;
'프로그래밍언어공부 > Java' 카테고리의 다른 글
[알고리즘 문제풀이] 멀리 뛰기 (0) | 2017.11.26 |
---|---|
[알고리즘 문제풀이] 행렬의 곱셉 (0) | 2017.07.29 |
[알고리즘 문제풀이] 직사각형 좌표찾기 (0) | 2017.07.29 |
[알고리즘 문제풀이] 2016년 (2) | 2017.06.25 |
[알고리즘 문제풀이] 최솟값 구하기 (0) | 2017.06.25 |