반응형
문제
M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.
문제풀이
m=int(input())
n=int(input())
arr=[]
tmp=0
#01
for i in range(1,100+1):
if m<=i**2 and i**2<=n:
tmp+=i**2
arr.append(i**2)
#02
if tmp==0 and len(arr)==0:
print(-1)
else:
print(tmp)
print(arr[0])
- #01 : 문제의 주어진 범위가 10000이하이기에 for문의 범위를 1에서 100까지 지정한다.
이후 i의 제곱이 m과 n사이의 값이라면 tmp에 i의 제곱값을 더해주고, arr에 추가해준다.
- #02 : 만약 tmp도 초기값이고 arr의 길이가 0이라면 -1을 출력해준다.
그렇지 않다면 tmp(총합)와 arr의 가장 작은 값인 arr[0]을 출력한다.
'프로그래밍 > 백준' 카테고리의 다른 글
[알고리즘] 백준 4796 파이썬 - 캠핑 (4) | 2023.01.02 |
---|---|
[알고리즘] 백준 10093 파이썬 - 숫자 (6) | 2023.01.01 |
[알고리즘] 백준 1924 파이썬 - 2007년 (6) | 2022.12.30 |
[알고리즘] 백준 6322 파이썬 - 직각 삼각형의 두 변 (2) | 2022.12.29 |
[알고리즘] 백준 10101 파이썬 - 삼각형 외우기 (1) | 2022.12.28 |