[COS PRO 1급] 3차 문제7) 카프리카 수

아현·2023년 9월 13일
0

Algorithm

목록 보기
392/400

연습문제


카프리카 수


카프리카 수는 다음을 만족하는 수를 뜻합니다.

  • 자신의 제곱수를 둘로 나누어 더한 값이 자기 자신과 같습니다.

    • 단, 둘로 나뉜 수는 모두 양수여야 합니다.

    • 예를 들어, 55^2 는 3,025입니다. 3,025는 3과 025, 30과 25, 302와 5로 나눌 수 있습니다. 이때 30+25 = 55이므로 55는 카프리카 수입니다.

자연수 k가 매개변수로 주어질 때, k 이하인 모든 카프리카 수를 배열에 담아 오름차순으로 정렬하여 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되었기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해 모든 입력에 대해 올바르게 동작하도록 수정해주세요.

□ 매개변수 설명

자연수 k가 solution 함수의 매개변수로 주어집니다.
k는 50 이상 100,000 이하인 자연수입니다.

□ return 값 설명

k 이하인 모든 카프리카 수를 배열에 담아 오름차순으로 정렬하여 return 해주세요.
100,000 이하인 카프리카 수는 100개보다 작습니다.




# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean

def solution(k):
	answer = []
	for i in range(1, k + 1):
		square_num = i * i
		divisor = 1
		while square_num // divisor != 0:
			front = square_num // divisor
			back = square_num % divisor
			divisor *= 10
			if back != 0 and front != 0:
				if front + back == i:
					answer.append(i)
	return answer
    
profile
Studying Computer Science

0개의 댓글