백준/실버
[백준 2417번] 정수 제곱근 (C++)
게임개발기원
2024. 2. 29. 16:36
문제링크 : https://www.acmicpc.net/problem/2417
2417번: 정수 제곱근
정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
ll N;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N;
ll tmp = sqrt(N); //제곱근 반환
if(tmp*tmp < N) tmp++;
cout << tmp;
return 0;
}
태그에는 이분탐색이 적혀있지만, 굳이 이분탐색을 사용할 필요가 없는 문제이다.
sqrt 함수를 통해 간단하게 제곱근을 구할 수 있다.
하지만 실수연산에 따라 오차범위가 발생한다.
따라서 sqrt를 통해 구한 제곱근을 다시 제곱하여 N보다 작다면 구했던 제곱근에 + 1을 해주어야 한다.