BOJ/백준-1977-python

cosmos·2021년 2월 25일
3
post-thumbnail

문제📖

풀이🙏

  • 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
  • M이상 N이하의 자연수 중 완전제곱수인 것을 모두 찾아 첫째 줄에 그 합을
  • 둘째 줄에 그 중 최솟값을 출력하라.
  • 완전제곱수가 없을 경우에는 첫째 줄에 -1을 출력하라.
    -> math 모듈의 sqrt로 루트를 구현했다.
    -> for 반복문으로 M에서 N까지 돌면서 해당 숫자에 루트를 씌었을 때, 소수점이 0인 경우 완전제곱수인걸로 판단해서 listappend한다.
    -> sqrt를 쓰면 무조건 flaot형으로 값이 되기때문에 위와 같은 방식을 쓴것이다.
    -> listlen이 0이면 -1을 출력하도록 아니면 summin을 사용해서 list의 합과 최솟값을 출력하도록했다.

코드💻

# boj, 1977 : 완전제곱수, python3
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

0개의 댓글