📌 문제
💯 정답
numbers_set = set(range(1, 10001)) // 전체 수 집합
generators_set = set() // 생성자 집합
for i in range(1, 10001):
for j in str(i): // i=850일때 j="8","5","0"
i += int(j) // 원래의 i값(850)에 8+5+0
generators_set.add(i) // 생성자가 존재하는 숫자들의 집합에 추가
self_number = sorted(numbers_set - generators_set) // 셀프 넘버 집합
// 오름차순 정렬
for k in self_number:
print(k)
📝 설명
• 셀프넘버를 출력하기위해서는 우선 생성자들을 만들어야한다.
• 전체 수 - 생성자 = 셀프 넘버 임을 기억하면 차집합을 이용하기위해 집합 set()을 이용해야한다.
• 생성자를 만들 때, 원래의 숫자를 str형태로 만들면 각 자릿수로 분리할 수 있음을 기억한다.
• 따라서, int(원래숫자) 에 int(str(원래숫자)) 를 자릿수만큼 for문으로 반복하며 누적해주면 생성자를 알아낼 수 있다.
⭐️ 알고가기
🔎 집합 set( )
👉 집합 set( ) 설명 보러 가기