[BOJ] 백준 4673 - 셀프 넘버

👩🏻‍💻 문제

👩🏻‍💻 정답 코드

numbers = set(range(1,10001))
generated = set()

for i in range(1, 10001):
  for j in str(i):
    i += int(j)
  generated.add(i)

numbers = sorted(numbers-generated)
for i in numbers:
    print(i)

numbers 집합에 1부터 10000까지를 넣고, for문을 돌리면서 각 자릿수와 숫자 자체를 generated 집합에 넣어 준다. 집합을 사용함으로써 중복 없이 처리할 수 있고, 마지막에 numbers-generated으로 차집합을 구해 답을 낼 수 있다. 대신 하나씩 증가하는 순서랬으므로 sorted으로 정렬 필요


👩🏻‍💻 Remember

sorted(iterable)iterable 그대로 정렬하는 iterable.sort()와 다르게 정렬된 새로운 배열을 리턴한다.

좋은 웹페이지 즐겨찾기