Java
[백준 1911] 흙길 보수하기 (JAVA)
iheeeee6-6
2023. 4. 18. 13:57
728x90
https://www.acmicpc.net/problem/1911
1911번: 흙길 보수하기
어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N (1 <= N <= 10,000) 개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이 L (L은 양의 정수)
www.acmicpc.net
객체를 생성하여 ArrayList에 담고, 시작번호로 정렬해준다!
그리고 널빤지 크기만큼 더해서 널빤지가 필요한 위치를 구분한다.
간단하게 해결~!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
static class Dot implements Comparable<Dot>{
int x, y;
Dot(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(Dot d) {
return this.x-d.y;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken());
ArrayList<Dot> list = new ArrayList<>();
int result = 0;
int now = 0;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
list.add(new Dot(x, y));
}
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
Dot d = list.get(i);
int x = d.x;
int y = d.y;
for (int j = x; j < y; j++) {
if (now < j) {
result++;
now =j+l-1;
}
}
}
System.out.println(result);
}
}