문제
접근
1부터 n까지 올라가며 하나씩 제곱해서 같은지 비교할 수 있다.
좀 더 빠른 방법은 1부터 n까지를 이분 탐색하면 된다.
하지만 math에 sqrt 라는 좋은 함수가 있으니 이를 이용하면 간단하게 해결할 수 있다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
import math
def solution(n):
answer = math.sqrt(n)
if answer % 1 == 0:
return (answer+1)*(answer+1)
else:
return -1
- C++ 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <vector>
#include <math.h>
using namespace std;
long long solution(long long n) {
long long answer = sqrt(n);
if(answer*answer == n){
return (answer+1)*(answer+1);
}
else{
return -1;
}
}