문제
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);
}
}
'‡ CODING TEST STUDY ‡ > º 백준' 카테고리의 다른 글
[백준 | Java Silver II] (#13702) 이상한 술집 (8) | 2024.07.23 |
---|---|
[백준 | Java Silver IV] (#10816) 숫자 카드 2 (3) | 2024.07.23 |
[백준 | Java Silver IV] (#1072) 게임 (0) | 2024.07.22 |
[백준 | Java Silver IV] (#1920) 수 찾기 (0) | 2024.07.22 |
[백준 | Java Silver I] (#9465) 스티커 (0) | 2024.07.19 |