하샤드 수

문제정의


주어진 수가 하샤드 수인지 판별하는 문제이다. 하샤드 수란 각 자릿수의 합으로 나누어 떨어지는 수이다.

문제풀이


전체 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class HarshardNum {

//프로그래머스 문제풀이 level1 하샤드 수
public static void main(String[] args)
{
int x = 10;
boolean answer = true;
int n = x;
int q = 0;
while(n > 0)
{
q += n%10;
n /= 10;
}
if(x % q != 0)
answer = false;

System.out.print(answer);
}

}
나누는 수 q를 구하는 부분을 주목해서 보면 된다. 각 자릿수를 더하는 것은 10으로 나머지 연산을 하고 10으로 나누면 된다. 이 알고리즘의 총 시간복잡도는 자릿수만큼 반복하므로 \(O(log10(n))\)이다.

테스트