https://www.acmicpc.net/problem/1977
Problem
- M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.
조건
- 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10000이하의 자연수이며 M은 N보다 같거나 작다.
- M이상 N이하의 자연수 중 완전제곱수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 완전제곱수가 없을 경우는 첫째 줄에 -1을 출력한다.
SOL
A~B에서 root값이 정수인 경우 ans에 추가해주면 된다!
import sys
import math
input= sys.stdin.readline
A=int(input().rstrip())
B=int(input().rstrip())
ans=[]
for i in range(A,B+1):
if math.sqrt(i).is_integer():
ans.append(i)
if not ans:
print(-1)
else:
print(sum(ans))
print(ans[0])
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/16235/파이썬] 나무 제테크 (0) | 2022.03.22 |
---|---|
[백준/1916/파이썬] 최소비용 구하기 (0) | 2022.03.22 |
[백준/16953/파이썬] A->B (0) | 2022.03.18 |
[백준/12851/파이썬] 숨바꼭질 2 (0) | 2022.03.18 |
[백준/1504/파이썬] 특정한 최단경로 (0) | 2022.03.18 |