Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [4673] - 셀프 넘버

yaebb_82 2022. 8. 10.

 

 

 

문제

 

 

 

작성한 코드

def d(n):
    n = n + sum(map(int, str(n)))
    return n

notSelfNum = set()

for i in range(1, 10001):
    notSelfNum.add(d(i))

for i in range(1, 10001):
    if i not in notSelfNum:
        print(i)

- 생성자가 있는 숫자를 만드는 함수 d를 만들고, 매개변수를 양의 정수 n (생성자)으로 받는다.

- 생성자가 있는 숫자를 만드는 방법은 문제에서와 같이, sum(map(int, str(n)))을 해주면 양의 정수 n (생성자)의 각 자리 수의 합을 구할 수 있다.

- 중복 배제 특성과 특정 데이터의 존재 유무를 확인이 용이하다는 특성 때문에 집합 자료형 set을 사용한다.

- 셀프 넘버가 아닌 것들을 set으로 선언한 notSelfNum에 저장하고자 한다. (셀프 넘버 : 생성자X)

- for i in range(1, 10001): 1부터 10000까지 반복문 for문을 돌려 set인 notSelfNum에 add를 통해 d(n)함수를 적용한 값들을 추가한다.

- for i in range(1, 10001): 1부터 10000까지 반복문 for문을 돌려 i가 notSelfNum 안에 없을 때 해당 i의 값을 print()로 출력한다.

- 그러면 한 줄에 하나씩 셀프 넘버를 출력할 수 있다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 [11654] - 아스키 코드  (0) 2022.08.11
백준 [1065] - 한수  (0) 2022.08.10
백준 [15596] - 정수 N개의 합  (0) 2022.08.10
백준 [4344] - 평균은 넘겠지  (0) 2022.08.09
백준 [8958] - OX퀴즈  (0) 2022.08.09

댓글