[Silver I] ํ๊ธธ ๋ณด์ํ๊ธฐ - 1911
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 39268 KB, ์๊ฐ: 852 ms
๋ถ๋ฅ
์ ๋ ฌ, ์ค์ํ
๋ฌธ์ ์ค๋ช
์ด์ ฏ๋ฐค ๊ฒจ์ธ ์บ ํ ์ฅ์์์ ์๋ ๋ณธ์๊น์ง ์ด์ด์ง๋, ํ์ผ๋ก ๋ ๋น๋ฐ๊ธธ ์์ ํญ์ฐ๊ฐ ๋ด๋ ค์ N (1 <= N <= 10,000) ๊ฐ์ ๋ฌผ์ ๋ฉ์ด๊ฐ ์๊ฒผ๋ค. ์๋ํ์์ ๋ฌผ์ ๋ฉ์ด๋ฅผ ๋ฎ์ ์ ์๋ ๊ธธ์ด L (L์ ์์ ์ ์) ์ง๋ฆฌ ๋๋นค์ง๋ค์ ์ถฉ๋ถํ ๊ฐ์ง๊ณ ์์ด์, ์ด๋ค๋ก ๋ค๋ฆฌ๋ฅผ ๋ง๋ค์ด ๋ฌผ์ ๋ฉ์ด๋ค์ ๋ชจ๋ ๋ฎ์ผ๋ ค๊ณ ํ๋ค. ๋ฌผ์ ๋ฉ์ด๋ค์ ์์น์ ํฌ๊ธฐ์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, ๋ชจ๋ ๋ฌผ์ ๋ฉ์ด๋ค์ ๋ฎ๊ธฐ ์ํด ํ์ํ ๋๋นค์ง๋ค์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ์ฌ๋ผ.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ L์ด ๋ค์ด์จ๋ค.
๋์งธ ์ค๋ถํฐ N+1๋ฒ์งธ ์ค๊น์ง ์ด N๊ฐ์ ์ค์ ๊ฐ๊ฐ์ ์ ๋ฉ์ด๋ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ์ ๋ฉ์ด์ ์ ๋ณด๋ ์ ๋ฉ์ด์ ์์ ์์น์ ๋ ์์น๋ก ์ด๋ฃจ์ด์ง๋ค. ๊ฐ ์์น๋ 0์ด์ 1,000,000,000์ดํ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ชจ๋ ๋ฌผ์ ๋ฉ์ด๋ค์ ๋ฎ๊ธฐ ์ํด ํ์ํ ๋๋นค์ง๋ค์ ์ต์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // ๋ฌผ์
๋ฉ์ด ๊ฐ์
int l = sc.nextInt(); // ๋๋นค์ง ๊ธธ์ด
int minPlank = 0; // ๋๋นค์ง๋ค์ ์ต์ ๊ฐ์
int x = 0; // ์ด์ ์ ๋์ ๋๋นค์ง์ ๋ ์์น
int[][] puddle = new int[n][2]; // ๋ฌผ์
๋ฉ์ด์ ์์ ์์น์ ๋ ์์น๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด
// ๋ฌผ์
๋ฉ์ด ์์ ์์น์ ๋ ์์น ์
๋ ฅ ๋ฐ๊ธฐ
for (int i = 0; i < n; i++) {
puddle[i][0] = sc.nextInt();
puddle[i][1] = sc.nextInt();
}
// ๋ฌผ์
๋ฉ์ด ์์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
Arrays.sort(puddle, 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]);
}
});
// ๊ฐ ๋ฌผ์
๋ฉ์ด๋ฅผ ๋ฎ๊ธฐ ์ํด ํ์ํ ๋๋นค์ง ๊ฐ์ ๊ณ์ฐ
for (int i = 0; i < n; i++) {
if (puddle[i][0] > x) { // ์์์์น๊ฐ ๋ฒ์๋ณด๋ค ํด ๊ฒฝ์ฐ
x = puddle[i][0];
}
if (puddle[i][1] >= x) { // ๋์์น๊ฐ ๋ฒ์๋ณด๋ค ํด ๊ฒฝ์ฐ
while (puddle[i][1] > x) {
x += l;
minPlank++;
}
}
}
System.out.println(minPlank);
}
}