문제
https://www.acmicpc.net/problem/11561
문제 풀기
1. 이분 탐색
2번째로 도전하는 이분 탐색 문제이다. 밟는 징검다리 수의 최대 값을 찾으라고 한다. 근데 제한사항이 택도 없이 큰 숫자라 완전 탐색은 안 된다. 이분 탐색을 사용해야겠다고 생각했다.
2. 등차 수열
"두 번째 점프부터는 이전에 점프한 거리보다 1 이상 더 긴 거리를 뛰어야만 한다." 라는 것에서 등차 수열을 사용하면 좋겠다는 생각이 들었다.
작성한 코드
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long test = sc.nextLong();
for(int i = 0; i < test; i++) {
long n = sc.nextLong();
long result = 0;
long left = 0;
long right = (long) Math.sqrt(2*n);
while(left <= right) {
long mid = (left + right) / 2;
long sum = mid * (mid + 1) / 2;
if(sum <= n) {
result = Math.max(result,mid);
left = mid + 1;
} else {
right = mid - 1;
}
}
System.out.println(result);
}
}
}
'개발 > 코테 TIL' 카테고리의 다른 글
[99클럽 코테 스터디 TIL#4일차] 백준 24479 (0) | 2024.11.01 |
---|---|
[99클럽 코테 스터디 TIL#3일차] 프로그래머스 입국심사 (0) | 2024.10.31 |
[99클럽 코테 스터디 TIL#1일차] 백준 1072 (1) | 2024.10.29 |
[Java] chars() 함수의 사용 (0) | 2024.05.13 |
[Java] 나머지가 1인 수 구하기 (0) | 2024.05.03 |