반응형
문제
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을 출력한다.
예제 입력 160100 |
예제 출력 124564 |
예제 입력 27580 |
예제 출력 2-1 |
풀이
제곱과 제곱근, 소수점을 다루는 문제이다.
예제 1의 풀이로 설명을 대체하겠다.
기본적으로 60 <= 완전제곱수 <= 100 을 만족해야 한다.
문제를 쉽게 풀기 위해 루트를 씌워주도록 하자.
7.746 <= 완전제곱수0.5 <= 10 이 되었다.
여기서 7.746 이상의 자연수만 답이 될 수 있으므로 math.ceil로 올림을 해주면
8,9,10 이 완전제곱수의 제곱근에 해당한다.
위 숫자들에 제곱을 해주고 이를 합과 최솟값으로 출력해주자.
import math
m,n = int(input()),int(input())
r = []
for i in range(math.ceil(m**0.5),int(n**0.5)+1):
r.append(i**2)
if r:
print(sum(r),r[0],sep="\n")
else:
print(-1)
반응형
'알고리즘 연습 > 구현, 문자열' 카테고리의 다른 글
[🥉1 / 백준 11655 / 파이썬] ROT13 (0) | 2021.08.28 |
---|---|
[🥈5 / 백준 1292 / 파이썬] 쉽게 푸는 문제 (0) | 2021.08.26 |
[🥉2 / 백준 1100 / 파이썬] 하얀 칸 (0) | 2021.08.17 |
[🥈5 / 백준 10610 / 파이썬] 30 (2) | 2021.08.15 |
[🥈4 / 백준 11656 / 파이썬] 접미사 배열 (0) | 2021.08.15 |