
📋문제 정리
- 배열을 입력받아 5연속된 숫자를 만들기 위한 최소 갯수를 출력하라
🎯풀이
- 배열을 입력받은 후 오름차순으로 정렬한다.
- 최대 4개가 필요하기 때문에 start,end는 0 cnt 4로 초기화시킨다.
- end의 값과 start의 값이 5보다 작으면 end를 증가시킨다.
- 증가시킨후 end-start로 start와 end사이의 숫자의 갯수를 구한다.
- 5-(end - start)와 cnt중 최솟값을 cnt에 저장한다.
- 5보다크면 start를 증가시킨다. end가 n이상이면 끝낸다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int arr[] = new int[n];
for(int i=0;i<n;i++){
st = new StringTokenizer(br.readLine());
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int start = 0;
int end = 0;
int cnt = 4;
while(true){
if(end >= n) break;
if(arr[end] - arr[start]<5){
end++;
cnt = Math.min(cnt,5-(end - start));
}
else{
start++;
}
}
sb.append(cnt);
System.out.println(sb);
br.close();
}
}