0%

[백준/4673] 셀프 넘버

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)