알고리즘
먼저 생성자의 개념을 잘 이해해야 한다. 이를 위해 문제에서 준 예시를 사용해보자.
주어진 수 n | 다음 수 | sum | 생성자 |
33 | 33 + 3 + 3 | 39 | |
39 | 39 + 3 + 9 | 51 | 39 |
91 | 91 + 9 + 1 | 101 | 91 |
100 | 100 + 10 → 100 + 1 | 101 | 100 |
101 의 생성자는 91 과 100 두개이다.
100 에서 알 수 있듯이 단순히 주어진 수 + 십으로 나눴을 때의 몫 + 십으로 나눴을 때의 나머지로 계산하는게 아니다. 몫이 십으로 나눠 질 수 있다면 또 나눠야 한다.이를 정리하면 다음과 같다.
remainder = n % 10
sum += remainder
n /= 10
이를 언제까지 해야할까? n 이 10 으로 나누어 떨어질 때까지 반복해야한다. 또한 반복해서 계속 더해지는 sum 은 10000 을 초과하면 안된다. 이렇게 해서 얻게 된 수들은 셀프넘버가 아니다. 때문에 반복문으로 셀프넘버를 찾아줘야 한다.
나머지는 깃허브링크를 타고들어가서 풀이코드를 보면 이해할 수 있을 것이다.
깃허브 링크는 위에 있습니다