카테고리 없음
[백준/JAVA] 1911번: 흙길 보수하기
imname1am
2023. 8. 23. 01:12
반응형
🔺 문제
1911번: 흙길 보수하기
어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N(1 ≤ N ≤ 10,000)개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이가 L(1 ≤ L ≤ 1,000
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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 N = Integer.parseInt(st.nextToken()); // 웅덩이 개수
int L = Integer.parseInt(st.nextToken()); // 널빤지 길이
int[][] arr = new int[N][2]; // 물 웅덩이 시작-끝 위치
for(int i = 0 ; i < N ; i++) {
st = new StringTokenizer(br.readLine(), " ");
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
// [1. 웅덩이 정렬]
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[0] == o2[0]) return Integer.compare(o1[1], o2[1]);
return Integer.compare(o1[0], o2[0]);
}
});
// [2. 웅덩이 순회하며 널빤지 깜]
int cnt = 0; // 필요한 널빤지 개수
int range = 0; // 널빤지를 물웅덩이에 덮었을 때, 덮을 수 있는 범위
for(int i = 0 ; i < N ; i++) {
if(arr[i][0] > range) {
range = arr[i][0];
}
if(arr[i][1] >= range) {
while(arr[i][1] > range) {
range += L;
cnt++;
}
}
}
System.out.println(cnt);
}
}
|
cs |
✅ 해결 아이디어
✔ 정렬 & 그리디
1] 웅덩이 정렬 (Line 22-28)
- 물 웅덩이 시작 위치 기준으로 오름차순 정렬
- 시작 위치가 동일한 경우, 끝 위치 기준으로 오름차순 정렬
2] 웅덩이 순회하며 널지찌 깔기 (Line 30-43)
- 만약 웅덩이 시작 위치 > range라면, 새로 널빤지를 덮어야 하므로 시작 위치를 range로 설정
- 만약 웅덩이 끝 위치 > range라면, 널빤지를 깔고 range를 널빤지 길이만큼 증가시킴
- while문이 돌 때마다 널빤지 개수인 answer + 1
🔺 다른 풀이들
- 다들 비슷하심
💬 느낀 점
후엥 그리디 쉽지 않구나.....ㅠ
복습을 245만번해야할듯..
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔
[백준] 1911번: 흙길 보수하기(그리디)
https://www.acmicpc.net/problem/1911 1911번: 흙길 보수하기 어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N (1 range) { range += L; nulpan ++; } } } System.out.println(nulpan
zzang9ha.tistory.com
[백준] Java 1911 흙길 보수하기
https://www.acmicpc.net/problem/1911정렬스위핑 알고리즘처음 길이부터 끝까지 한번만 스캔하면서 문제를 해결하는 것.일단 스위핑 알고리즘을 이용하려면 배열을 정렬시켜야 한다.1\. 웅덩이 시작점 오
velog.io
반응형