[백준/파이썬] 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입니다.



이런 주제는 어떠신가요?

비슷한 난이도와 유형의 문제를 이어서 보면 풀이 감각을 더 빠르게 잡기 좋습니다.

댓글남기기