문제링크: 백준 4673번(셀프넘버)
l = list(i for i in range(1, 10001))
new_l = []
for i in l:
num = 0
for j in str(i):
num += int(j)
num += i
new_l.append(num)
self_num = sorted(set(l) - set(new_l))
for i in self_num:
print(i)
1~10000까지 for문을 돌려 리스트에 넣어줬다.
그리고 이중 for문을 돌려 각 자리수를 더해 생성자들을 구해주었고 주었고 새로운 리스트에 넣어줬다.
셀프 넘버는 1~10000의 값을 갖는 리스트에서 생성자 리스트를 뺀 나머지이므로 이를 구하기 위해 set으로 변환해 차집합을 구했다.
굳이 리스트로 값들을 받아줄 필요가 없이 집합 자료형으로 문제를 해결할 수 있다고 생각
num = set(range(1, 10001))
new_num = set()
for i in num:
for j in str(i):
i += int(j)
new_num.add(i)
self_num = sorted(num - new_num)
for i in self_num:
print(i)
대략적인 풀이 방식은 이전과 동일하고, list를 set으로 변경해줬다.