4673번: 셀프 넘버

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

www.acmicpc.net

✏️ 내가 작성한 코드 

num_list = []  # d(n)담을 리스트

# 1. 1~10000까지 n을 d(n)해줌
for n in range(1, 10000):
    n_sum = n  # ex. d(12) = 12 + 1 + 2 -> 따라서 n, 즉 12는 먼저 sum에 넣고 1,2는 for 돌려가면서 덧셈
    for i in str(n):  # 문자열형식이어야 n의 각 자리수 하나씩 가져올 수 있음
        n_sum += int(i)
    num_list.append(n_sum)

set_num_list = set(num_list)  # 중복 제거를 위해 set으로 만들어줌

# 2. 1~10000까지의 수 중에서 d(n)값들이 들어있는 리스트에 해당되지 않는 수는 출력해줌(셀프넘버)
for j in range(1, 10001):
    if j not in set_num_list:
        print(j)

+ Recent posts