[HackerRank] Modified Kaprekar Numbers

Jongmin Lee (SAVZAK)·2021년 7월 19일
0

HackerRank

목록 보기
38/39

[문제 링크]

[입력]

int p: 범위내 최소 숫자.
int q: 범위내 최대 숫자.

[출력]

p이상 q 이하의 숫자들 중에서 조건을 만족하는 숫자를 오름차순으로 출력
만약 없다면 , 'INVALID RANGE' 를 출력
반환값은 없다.

[해결 시나리오]

제곱한 결과가 한 자리 숫자이면 만약 제곱수가 제곱한 수와 같다면 출력하면 된다.
제곱한 결과가 10 이상이면서 홀수 길이이면 조건을 만족하지 못한다.
제곱한 결과가 10 이상이면서 짝수 길이이면 반을 나눠서 두 수의 합이 제곱하는 숫자와 같은지 확인해서 같다면 출력하면 된다.

[코드]

def kaprekarNumbers(p, q):
    # Write your code here
    result = list()
    for num in range(p,q+1):
        square = str(num*num)
        if(len(square)==1):
            if(num*num == num):
                result.append(num)
        else:
            if(int(square[0:len(square)//2])+int(square[len(square)//2:])==num):
                result.append(num)    
    if(len(result)==0):
        print('INVALID RANGE')
    else:
        for i in result:
            print(i , end=' ')
profile
느리지만 단단하게 걷는 개발자

0개의 댓글