프로그래밍/백준

[알고리즘] 백준 1977 파이썬 - 완전제곱수

매 석 2022. 12. 31. 17:31
반응형

 

 

1977번: 완전제곱수

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완

www.acmicpc.net

문제

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.

 

문제풀이

m=int(input())
n=int(input())
arr=[]
tmp=0
#01
for i in range(1,100+1):
    if m<=i**2 and i**2<=n:
        tmp+=i**2
        arr.append(i**2)
#02
if tmp==0 and len(arr)==0:
    print(-1)
else:
    print(tmp)
    print(arr[0])

- #01 : 문제의 주어진 범위가 10000이하이기에 for문의 범위를 1에서 100까지 지정한다.

           이후 i의 제곱이 m과 n사이의 값이라면 tmp에 i의 제곱값을 더해주고, arr에 추가해준다.

- #02 : 만약 tmp도 초기값이고 arr의 길이가 0이라면 -1을 출력해준다.

           그렇지 않다면 tmp(총합)와 arr의 가장 작은 값인 arr[0]을 출력한다.