알고리즘/백준 풀이(그리디)
백준 1449번 - 수리공 항승
공부 기록장
2024. 1. 31. 19:08
https://www.acmicpc.net/problem/1449
1449번: 수리공 항승
첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나
www.acmicpc.net
이 문제는 누수가 발생한 부분에 길이가 N인 테이프를 사용하여 조치할 때 필요한 최소의 테이프 개수를 출력하는 문제이다.
예제에서
4 2
1 2 100 101 은
길이가 2인 테이프이므로 누수 발생 지점인 1과 2, 100과 101 을 총 두 개의 테이프로 막을 수 있다.
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int cnt=1;
int N = Integer.parseInt(st.nextToken());
int L = Integer.parseInt(st.nextToken());
int arr[] = new int[N];
st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++){
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
double range = arr[0]-0.5+L;
for(int i=0;i<N;i++){
if(arr[i]>range){
cnt++;
range = arr[i]-0.5+L;
}
}
System.out.println(cnt);
}
}