최대 1 분 소요

1. 문제

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

  • 구현 문제
// 문제
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 출력한다.

// 예제 입력 1 
60
100

// 예제 출력 1 
245
64

// 예제 입력 2 
75
80

// 예제 출력 2 
-1


2. 핵심 아이디어

  • i를 1씩 더했을 때 제곱수가 입력 수에 있다면 리스트에 담음


3. Python 문제풀이

import sys
input = sys.stdin.readline

m = int(input())
n = int(input())
num = []
i = 1

while i ** 2 <= n :
  if m <= i ** 2 <= n :
    num.append(i ** 2)
  i += 1
  
if num == [] :
  print(-1)
else :
  print(sum(num))
  print(num[0])


4. Java 문제풀이


댓글남기기