22.04.27 코테

김영태·2022년 4월 27일

백준 파이썬 4673 셀프넘버

코드

a = set(range(1, 10001))
gen_num = set()

for i in range(1,10001):
    for j in str(i):
        i += int(j)
    gen_num.add(i)
        
result = a - gen_num
s_result = sorted(result)

for z in s_result:
    print(z)

이 문제도 오랫동안 고민했었는데 드디어 해결했습니다.

착오가 두 가지나 있었는데, 매일 보면서도 이상한 점을 찾아내지 못한 것을 보면 더 꼼꼼함이 필요한 것 같습니다.

착오점은 다음과 같습니다.

  1. 기껏 str(i)를 사용했는데, int형으로 바꾸지 않고 바로 더한 것
  2. set 자료형에 append를 사용했던 것

이 중에서 2번은 전혀 생각하지 못한 문제였습니다.

찾아보니 집합 자료형은
값 1개를 추가할 때 add
값 여러개를 추가할 때 update
값을 제거할 때 remove
를 사용해야 한다고 합니다.
링크 : https://wikidocs.net/1015

0개의 댓글