Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 1977번 - '완전제곱수' (PYTHON 풀이) 본문
문제:

1,4,9,16 ... 과 같이 어떤 수를 제곱한 값인 완전제곱수를 구하는 문제이다.
풀이:
M = int(input())
N = int(input())
total = 0
minimum = 0
for i in range(1, 101):
square = i * i
if square > N:
break
if square >= M:
total += square
if minimum == 0:
minimum = square
if total > 0:
print(total)
print(minimum)
else:
print(-1)
M, N을 입력받고 합계와 최솟값을 계산할 변수 두개를 0으로 초기화한다.
문제를 보면 'M과 N은 10000이하의 자연수이며 M은 N보다 같거나 작다.' 라는 조건이 있기 때문에 '루트10000 = 100', 즉, 100까지 제한이 걸려있는 것을 활용하면 for문을 간단히 만들 수 있다.
그래서 1부터 100까지 제곱한 값을 square에 넣고, 이 값이 최대값인 N보다 크다면 값이 없는 것이므로 반복문을 탈출하고, 그게 아니라면 M과 비교하여 같거나 클 경우 합계에 해당 제곱근을 누적합으로 더하여 총 합계를 구한다. 그리고 최초로 total에 제곱값이 더해질 때 minimum이 0으로 초기화되어 있으므로 최솟값에 square 값이 더해져서 minumum까지 구할 수 있게 된다.
모든 반복문이 돌아간 다음에는 총 합계를 확인해서 0보다 클 경우는 해당하는 범위 내에 제곱근이 있단 뜻이므로 합계와 최솟값을 출력하고, 그게 아니라면 -1을 출력한다.
'CODING 💻' 카테고리의 다른 글
| 백준 31495번 - '그게 무슨 코드니..' (PYTHON 풀이) (0) | 2026.02.25 |
|---|---|
| 백준 5988번 - '홀수일까 짝수일까' (PYTHON 풀이) (0) | 2026.02.24 |
| 백준 25955번 - 'APC는 쉬운 난이도 순일까, 아닐까?' (PYTHON 풀이) (0) | 2026.02.22 |
| 백준 17206번 - '준석이의 수학 숙제' (PYTHON 풀이) (0) | 2026.02.21 |
| 백준 11023번 - '더하기 3' (PYTHON 풀이) (0) | 2026.02.20 |
