728x90
https://www.acmicpc.net/problem/4673
전체의 범위에서 셀프 넘버가 아닌 누적합들을 빼주는것이 핵심이다
number = set(range(1, 10001)) #1
remove_set = set() #2
for num in number:
for n in str(num): #3
num += int(n)
remove_set.add(num) #4
self_numbers = number - remove_set #5
for self_number in sorted(self_numbers): #6
print(self_number)
#1 : 1~10000까지 숫자 생성 그리고 set()
#2 : 생성자가 있는 숫자 담을 리스트
#3 : int형을 str형으로 바꾸고 각 자리의 숫자를 기존 숫자에 더함
#4 : 생성자가 있는 숫자 리스트에 담기 - set이라서 append()아닌 add() 사용
#5 : 전체 숫자에서 생성자가 있는 숫자 빼기 - set에서 차집합을 구하는 방법
#6 : set은 순서가 없기 때문에 sorted로 리스트 정렬을 해주고 각 원소를 하나씩 출력
파이썬 set()을 이용해서 풀 수 있는 문제였다. 아직 set에 숙달되기 까지는 조금 더 시간이 걸릴것 같다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 2941 파이썬(python) : 크로아티아 알파벳 - (replace함수) (0) | 2022.07.03 |
---|---|
[백준] 5622 파이썬(python) : 다이얼 - (★) (0) | 2022.07.03 |
[백준] 15596 파이썬(python) : 정수 N개의 합 (0) | 2022.07.02 |
[백준] 10809 파이썬(python) : 알파벳 찾기 - (★) (0) | 2022.07.02 |
[백준] 1157 파이썬(python) : 단어 공부 - (★) (0) | 2022.07.02 |