[Python] 백준 4673번 셀프 넘버 (완전 탐색)

문제



풀이

나는 한번 씩 계산할 수 있게 먼저 10000개의 배열을 준비하였다. 그리고 재귀함수를 통하여 자릿수의 합과 원래 수의 합을 계산한 후, 그 수가 배열 n의 인덱스의 값이 0일 경우(없을 경우) 다시 함수를 호출하여 계속 찾게 만들었다.

def isNotSelf(n, num):
    # 자릿수 만들기

    arr = []
    temp = num
    while True:
        arr.append(temp % 10)
        if temp < 10:
            break
        temp //= 10

    result = sum(arr)+num
    if result <= 10000 and n[result] == 0:
        n[result] = 1
        isNotSelf(n, result)


n = [0 for i in range(0, 10000+1)]


for i in range(len(n)):
    if n[i] == 1:
        continue
    isNotSelf(n, i)

for i in range(len(n)):
    if n[i] == 0:
        print(i)

댓글