Algorithm Problems

[Cos Pro 1급] 3차 5번 - 암스트롱 수 (자아도취 수/ 나르시시즘 수)

WakaraNai 2021. 2. 14. 17:28
728x90
반응형

문제

어떤 자리 수 k가 주어졌을 때 각 자릿수의 k 제곱의 합이 원래 수가 되는 수를 자아도취 수라고 합니다. 예를 들어 153은 세 자리 자아도취 수입니다.

자연수 k가 매개변수로 주어질 때, k 자리 자아도취 수들을 리스트에 오름차순으로 담아 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

 

 

매개변수 설명

ksolution 함수의 매개변수로 주어집니다.

* k3 이상 6 이하인 자연수입니다.

 

 

return 설명

k 자리 자아도취 수를 오름차순으로 정렬한 뒤 리스트에 담아 return 합니다.

 

 

예시

k

return

3

[153, 370, 371, 407]

 

예시 설명

* 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153

* 370 = 3^3 + 7^3 + 0^3 = 27 + 343 + 0 = 370

* 371 = 3^3 + 7^3 + 1^1 = 27 + 343 + 1 = 371

* 407 = 4^3 + 0^3 + 7^3 = 64 + 0 + 343 = 407

 

 

Python

def armstrong(n,k):
    sum = 0
    init = n
    while n!=0:
        sum+= (n%10)**k
        n//=10
    return sum == init

def solution(k):
    result =[]
    for i in range(10**(k-1), 10**k):
        if armstrong(i,k):
            result.append(i)
    return result

for k in range(3,7):
    print("k =",k,solution(k))

'''
k = 3 [153, 370, 371, 407]
k = 4 [1634, 8208, 9474]
k = 5 [54748, 92727, 93084]
k = 6 [548834]
'''
728x90
반응형