규도자 개발 블로그

[기타/파이썬3(python3)] Kaprika넘버 본문

알고리즘/풀이

[기타/파이썬3(python3)] Kaprika넘버

규도자 (gyudoza) 2018. 10. 21. 01:47

문제

Kaprika수를 구하라. Kaprika 수란?

 예를 들어 네 자리 숫자 2025의 가운데를 갈라보면 20과 25의 두개의 숫자가 생긴다. 이 두개의 숫자를 더하면 45이고, 45를 제곱하면 2025가 되어 원상태로 되돌아간다. 이러한 성질을 갖는 수를 Kaprika수 라고 한다. 또 81은 가운데를 잘라보면 8 과 1로 갈라지고, 더하면 9가 되고 다시 제곱하면 81로 돌아간다. 그러므로 81은 두 자리 숫자의 Kaprika수가 되는 것이다. 네 자리로 구성된 kaprika 수를 모두 구하는 프로그램을 작성하시오.

입력

입력은 없다

출력

[2025, 3025, 9801]

입출력 예

입력출력
 [2025, 3025, 9801]

풀이

kaprika_array = []

for i in range(1000, 10000):
    current_numbers_footer = str(i)[2:]
    current_numbers_header = str(i)[:2]
    managed_number = int(current_numbers_header) + int(current_numbers_footer)
    managed_number_sqaured = managed_number ** 2
    if i == managed_number_sqaured:
        kaprika_array.append(i)
        
print(kaprika_array)

설명

먼저 문제의 설명대로 Kaprika숫자인지 검사하는 식을 만든다. 문제에서는 네 자리의 Kaprika숫자를 구하는 것이기 때문에 범위를 1000에서 9999까지로 제한한다. current_numbers_footer는 뒤의 두 자리 숫자를 문자열 형태로 담아두고 current_numbers_header는 앞의 두 자리 숫자를 담아둔다. 그리고 해당 숫자를 강제형변환하여 더하고 제곱한 수를 현재 반복문이 돌고 있는 숫자와 비교하여 같다면 Kaprika숫자이므로 Kaprika숫자를 담아두는 배열에 추가한다.

Comments