[백준/파이썬] 1977번 완전제곱수 풀이

업데이트:



문제 정보


풀이

문제

구간 [M, N] 안의 완전제곱수들을 찾아 합과 최솟값을 출력하는 문제입니다.

완전제곱수가 없으면 -1을 출력합니다.

코드

import math

m = int(input())
n = int(input())

minSqrt = math.ceil(math.sqrt(m))

if(minSqrt**2 > n):
    print(-1)
else:
    tmp = minSqrt
    s = 0
    while(tmp**2 <= n):
        s += tmp**2
        tmp += 1
    print(s)
    print(minSqrt**2)

설명

M 이상인 첫 제곱수의 루트 값을 ceil(sqrt(M))로 찾고, 그 제곱부터 N 이하까지 누적합니다.

첫 제곱수 자체가 N보다 크면 구간 내 완전제곱수가 없는 경우이므로 -1입니다.



댓글남기기