Baekjoon Online Judge - 4673
Code (Python)
- 분해합과 비슷한 문제.
- 생성자가 없는 숫자를 전부 출력하면 된다.
- 이래도 되나 싶었는데, 그냥 리스트에 다 집어넣고 집합 연산으로 풀어서 AC가 나왔다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| number_list = [] hap_list = []
for i in range(1, 10001): hap = 0 number = i number_list.append(i)
while number != 0: rest = int(number % 10) hap += rest number = int(number/10) hap += i hap_list.append(hap)
number_array = sorted(set(number_list) - set(hap_list)) for i in number_array: print(i)
|
References 1 (출처)
- 음. 굳이 리스트를 안 써도 되는구나. 집합 공부해야겠다.
- 자릿수를 더하는 방식이 신기하다. 수를 string으로 형변환하고 for문으로 자릿수를 전부 더해버렸다. 지난번 분해합에서 봤던 레퍼펀스랑 비슷한데 다른 느낌.
1 2 3 4 5 6 7 8 9 10 11 12
| natural_number_set = set(range(1, 10001)) generated_number_set= set()
for i in range(1, 10001): for j in str(i): i += int(j) generated_number_set.add(i)
self_number_set = natural_number_set - generated_number_set
for i in sorted(self_number_set): print(i)
|