[백준] 1977 python 완전제곱수 3가지 방법

2023. 1. 25. 03:51카테고리 없음

728x90

1. 반복문 for 사용

m=int(input())
n=int(input())
sum = 0
for i in range(1, int(n**0.5)+1):
    if i**2 >= m and i**2 <= n:
        sum += i**2
if sum == 0:
    print(-1)
else:
    print(sum)
    print(min(i**2 for i in range(1, int(n**0.5)+1) if i**2 >= m and i**2 <= n))

2. List comprehension을 이용하는 방법

 

m = int(input())
n = int(input())
perfect_squares = [i**2 for i in range(1, int(n**0.5)+1) if i**2 >= m and i**2 <= n]
if not perfect_squares:
    print(-1)
else:
    print(sum(perfect_squares))
    print(min(perfect_squares))

3.  filter 사용

m = int(input())
n = int(input())
perfect_squares = list(filter(lambda x: x >= m and x <= n, (i**2 for i in range(1, int(n**0.5)+1))))
if not perfect_squares:
    print(-1)
else:
    print(sum(perfect_squares))
    print(min(perfect_squares))

 

 

https://www.acmicpc.net/problem/1977

 

1977번: 완전제곱수

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

www.acmicpc.net

 

728x90