Algorithm 2

[입출력] Java FastIO For Competitive programming

입력보통 Java에서 입력을 받을때 Scanner, BufferedReader를 사용한다.그러나 프로그래밍 대회용에서 쓰는 좀더 빠른 입력 방법이 있다.DataInputStream 을 사용해 입력을 조금 더 빨리 받는거다. 백준같은 문제를 풀때는 BufferedReader 를 주로 사용해야하는데,FastReader 클래스는 Scanner 같이 nextInt, nextDouble 처럼 입력을 받아야한다. 실제로 BufferedReader로 236ms가 걸렸던 문제가 112ms까지 줄어들었다.그리고 해당 문제 Java 기준 가장 빠른 성능을 보여주기도 했다. 다만 클래스 정의가 굉장히 길어서 코테를 풀때는 BufferedReader를 계속 사용하면 될듯하고순위 욕심이 생긴다면 한번 ..

Algorithm 2024.04.19

[이분탐색] java lower bound, upper bound

매번 lower bound, upper bound 생각하는게 헷갈려 정리해본다. 상황 다음과 같이 내림차순이 아닌(오름차순이거나 같은) 배열이 있다고 가정해보자. [1,2,2,2,2,3,4,5,6,7,8]이때 2 값을 갖는 가장 작은 인덱스와 가장 큰 인덱스를 어떻게 구할것인가? 여기서 lower bound, upper bound 개념이 나온다. lower bound : key 값 이상인 값들중 가장 작은 인덱스 upper bound : key 값 초과인 값들중 가장 작은 인덱스 // [1,2,2,2,2,3,4,5,6,7,8] // lower bound System.out.println(lowerBound(2)); // 1 System.out.println(lowerBound(1.5)); // 1 Sys..

Algorithm 2023.12.11