‡ CODING TEST STUDY ‡/º 백준
[백준 | Java Silver IV] (#2417) 정수 제곱근
Trudy | 송연
2024. 7. 23. 02:50
문제
https://www.acmicpc.net/problem/2417
접근
Math.sqrt()를 사용하면 쉽게 구할 수 있었던 문제이다.
이분탐색으로도 푸는 방법이 있다.
최종코드 1 - Math.sqrt() 사용
package week12.baek.july23;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class S2417 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
long q = (long) Math.sqrt(n);
if((q*q) < n) q++;
System.out.println(q);
}
}
최종 코드 2 - 이분탐색 사용
package week12.baek.july23;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class S2417 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
// 1. Math.sqrt() 사용해서 푸는 방법
// long q = (long) Math.sqrt(n);
//
// if((q*q) < n) q++;
//
// System.out.println(q);
// 2. 이분 탐색으로 푸는 방법
long start = 0;
long end = n;
long result = 0;
while(start <= end){
long mid = (start + end) / 2;
//줄여야하는 경우 : end가 mid-1이 되면 됨
if(n <= Math.pow(mid, 2)){
result = mid;
end = mid -1;
}
//늘려야하는 경우
else {
start = mid + 1;
}
}
System.out.println(result);
}
}