본문 바로가기

코딩테스트/BOJ

[백준/파이썬] 4673번: 셀프 넘버 (Python)

문제

www.acmicpc.net/problem/4673

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net

풀이

 - 구현

 

 - 1부터 10000까지 리스트에 담고, n과 n의 각 자리수의 합이 10000보다 작고, 리스트 안에 존재하는 숫자라면 리스트에서 제외시켜준다. 해당 리스트에는 셀프넘버만 존재하게 된다

코드

arr = [ i for i in range(1,10001)]  # 1부터 10000까지 list에 담기

for i in range(1,10001):
    number = sum(map(int, str(i)))  # i의 각 자리수의 합
    if i + number <= 10000 and i+number in arr:
        a = i + number
        arr.remove(a)
        
for i in range(len(arr)):
    print(arr[i])