티스토리 뷰

728x90
반응형

https://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

 

 

내 코드

def d(n):
    num =str(n)
    sum=n
    for i in num:
        sum+=int(i)
    return sum

arr={i:0 for i in range(1,10001)}

for i in range(1,10000):
    arr[d(i)]=-1
for key in arr:
    if arr[key]!=-1:
        print(key)

 

딕서너리를 만들어 키로는 1~10000, 값으로는 0을 넣어주었다.

자릿수를 더하는 함수를 만들고, 자릿수를 더한 값을 키로 하는 딕셔너리의 값을 -1로 만들었다.

딕셔너리의 값이 -1이 아니면 생성자가 없는 셀프 넘버이므로 출력한다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함