본문 바로가기

BAEKJOON/Python3

백준 #4673: 셀프 넘버

함수 - #4673: 셀프 넘버  python3

 

#4673 link

 

4673번: 셀프 넘버

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

www.acmicpc.net

문제


셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다.

양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자.

예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 생성자가 없는 숫자를 셀프 넘버라고 한다.

100보다 작은 셀프 넘버는 총 13개가 있다.

1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

풀이


def selfnumber() :
    case_list = []            # 만약 n이 case_list의 case 중 하나라면, n=case는 생성된 값(!= selfnumber)이다.
    for n in range(1, 10001) :
        case = n + sum(int(i) for i in str(n)) # d(n) = case를 생성
        if n not in case_list :                # n이 case_list에 없으면 selfnumber이므로 n을 출력
            print(n)
        case_list.append(case)
selfnumber()

n의 모든 자리수의 합+ n의 값을 case라고

정의하고 리스트에 넣고 비교한다.

'BAEKJOON > Python3' 카테고리의 다른 글

백준 #11654: 아스키 코드  (0) 2020.08.19
백준 #1065: 함수  (0) 2020.08.19
백준 #15596: 정수 N개의 합  (0) 2020.08.19
백준 #4344: 평균은 넘겠지  (0) 2020.08.03
백준 #8958: OX퀴즈  (0) 2020.08.03