반응형
문제설명
어떤 자리 수 k가 주어졌을 때 각 자릿수의 k 제곱의 합이 원래 수가 되는 수를 자아도취 수라고 합니다. 예를 들어 153은 세 자리 자아도취 수입니다.
자연수 k가 매개변수로 주어질 때, k 자리 자아도취 수들을 리스트에 오름차순으로 담아 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
k가 solution 함수의 매개변수로 주어집니다.
* k는 3 이상 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
문제 코드
def power(base, exponent):
val = 1
for i in range(exponent):
val *= base
return val
def solution(k):
answer = []
bound = power(10, k)
for i in range(bound // 10, bound):
current = i
calculated = 0
while current != 0:
@@@
@@@
if calculated == i:
answer.append(i)
return answer
풀이
# exponent 자리의 최대값+1 구하기
def power(base, exponent):
val = 1
for i in range(exponent):
val *= base
return val
def solution(k):
answer = []
bound = power(10, k)
for i in range(bound // 10, bound):
current = i
calculated = 0
# 각 자릿수의 k제곱의 합 구하기
while current != 0:
calculated += (current%10)**k
calculated = calculated//10
if calculated == i:
answer.append(i)
return answer
댓글