https://www.acmicpc.net/problem/1337
1337번: 올바른 배열
첫째 줄에 배열의 크기 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 배열의 원소가 한 줄에 하나씩 주어진다. 원소는 1,000,000,000보다 작거나 같은 음이 아닌 정수이
www.acmicpc.net
저는 투포인트를 이용해 문제를 해결하였습니다.
입력 배열을 오름차순 정렬하였습니다.
시작 포인트와 끝 포인트의 값의 차가 5미만이라면 끝포인트를 늘리면서 결과값을 작은 값으로 초기화시켰습니다.
반대로 5이상이라면 시작 포인트를 늘려주었습니다.
package BOJ.twopoint;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.function.Function;
public class BOJ_1337 {
private static final int SIZE = 5;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Function<String,Integer> stoi = Integer::parseInt;
int n = stoi.apply(br.readLine());
int[] input = new int[n];
for(int i = 0 ; i < n ; i++){
input[i] = stoi.apply(br.readLine());
}
Arrays.sort(input);
int result = cal(input,n);
System.out.println(result);
}
private static int cal(int[] input, int n) {
int si = 0;
int ei = 0;
int result = 4;
while(true){
if(ei >= n){
break;
}
if(input[ei] - input[si] < SIZE){
ei++;
result = Math.min(result, SIZE - (ei - si));
}else{
si++;
}
}
return result;
}
}
'알고리즘' 카테고리의 다른 글
백준 1826번 연료 채우기 (JAVA) (0) | 2022.08.23 |
---|---|
백준 14562번 태권왕 (JAVA) (0) | 2022.08.22 |
백준 21938번 영상처리 (JAVA) (0) | 2022.08.20 |
백준 11123번 양한마리 양두마리 (JAVA) (0) | 2022.08.19 |
백준 21937번 작업 (JAVA) (0) | 2022.08.18 |