문제📖
풀이🙏
- 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
- M이상 N이하의 자연수 중 완전제곱수인 것을 모두 찾아 첫째 줄에 그 합을
- 둘째 줄에 그 중 최솟값을 출력하라.
- 완전제곱수가 없을 경우에는 첫째 줄에 -1을 출력하라.
-> math
모듈의 sqrt
로 루트를 구현했다.
-> for
반복문으로 M에서 N까지 돌면서 해당 숫자에 루트를 씌었을 때, 소수점이 0인 경우 완전제곱수인걸로 판단해서 list
에 append
한다.
-> sqrt
를 쓰면 무조건 flaot
형으로 값이 되기때문에 위와 같은 방식을 쓴것이다.
-> list
의 len
이 0이면 -1을 출력하도록 아니면 sum
과 min
을 사용해서 list
의 합과 최솟값을 출력하도록했다.
코드💻
import sys
import math
M = int(sys.stdin.readline())
N = int(sys.stdin.readline())
result = []
for i in range(M,N+1):
root = str(math.sqrt(i)).split('.')
if root[1] == '0':
result.append(i)
if len(result) == 0:
print(-1)
else:
print(sum(result))
print(min(result))
결과😎
출처 && 깃허브📝
https://www.acmicpc.net/problem/1977
github