[백준 4673 파이썬] - 셀프 넘버

zsunny·2022년 6월 23일
0

📌 문제

💯 정답

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( ) 설명 보러 가기

profile
매일 성장하는 예비 웹 개발자 🌱

0개의 댓글