문제 요약 및 풀이
일단, 나이브하게 풀었다. ㅋㅋㅋ
풀이 코드
몇가지 간단한 생각을 하고, 나이브하게 다 긁었다.
- 특정 수가 제곱인지 확인하는 건, sqrt 씌우고 다시 곱해보면 된다.
- 어떤 수 i가 순서대로 증가할 때, \(i*i - (i-1)*(i-1) > g\) 되는 순간, 더이상 i 를 늘리면서 확인할 필요없다.
- [중요] 꼭 아무것도 출력 안 한 경우 -1 출력하기.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from math import sqrt
g = int(input())
cnt = 0
for i in range(1, 11000000):
if i*i - (i-1)*(i-1) > g:
break
k = i*i + g
q = int(sqrt(k))
if k == q*q:
print(q)
cnt += 1
if cnt == 0:
print(-1)
끝