문제링크 : 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을 해주어야 한다.
'백준 > 실버' 카테고리의 다른 글
[백준 11687번] 팩토리얼 0의 개수 (C++) (0) | 2024.03.02 |
---|---|
[백준 11663번] 선분 위의 점 (C++) (0) | 2024.03.01 |
[백준 6236번] 용돈 관리 (C++) (0) | 2024.02.28 |
[백준 1072번] 게임 (C++) (0) | 2024.02.26 |
[백준 22857번] 가장 긴 짝수 연속한 부분 수열 (small) (C++) (0) | 2024.02.23 |