본문 바로가기

Certificate/Cos Pro 1급 (Python)

[Cos Pro 1급] 기출문제 4회차, 자아도취 수

Hi, There!
안녕하세요, 바오밥입니다.


목차

  1. 문제
  2. 풀이

문제

문제 내용

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

예를 들어 153은 세 자리 자아도취 수입니다.

자연수 k가 매개변수로 주어질 때, k 자리 자아도취 수들을 리스트에 오름차순으로 담아 return 하도록 solution 함수를 작성하려 합니다.

빈칸을 채워 전체 코드를 완성해주세요.

 

매개변수 설명

k가 solution 함수의 매개변수로 주어집니다.

  • k는 3 이상 6 이하인 자연수입니다.

 

return 값 설명

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

 

예시

 

예시 설명

  • 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^3 = 27 + 343 + 1 = 371
  • 407 = 4^3 + 0^3 + 7^3 = 64 + 0 + 343 = 407

풀이

풀이 코드 및 해설

# base를 exponent만큼 제곱하여 반환
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): # k가 3인 경우 세 자리수 반복(100~999)
		current = i # 100..199까지 반복
		calculated = 0 # current 숫자와 비교할 변수
		while current != 0:
			calculated += power(current%10,k) # 153 -> 3, 3 -> 27 => ...
            		# 각 자릿수별로 k 제곱 값을 누적
			current //= 10 # 153 => 15 => 1 => 0
		if calculated == i: # 두 수가 같으면
			answer.append(i) # 자아도취 수 리스트에 추가
	return answer