http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=99&sfl=wr_hit&stx=1828
์ฒ์์ ๋ฌธ์ ์ดํด๋ฅผ ์ ๋ชปํ๋ค. ๊ทผ๋ฐ ๋ณด๋ฉด ๋ฐฑ์ค ํ์์ค ๋ฐฐ์ ๋ฌธ์ (https://www.acmicpc.net/problem/1931)์ ๊ฑฐ์ ๋น์ทํ๋ค. ๊ทธ๋์ ํ์์ค ๋ฐฐ์ ๋ฌธ์ ํ์ด๋ก ํ์๋ค.
1. ๊ฐ ํํ๋ฌผ์ง์ ์ต์ ์จ๋์ ์ต๊ณ ์จ๋๋ฅผ N*2 ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
2. ์ต๊ณ ์จ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋ค.
3. ์ฒซ ์ต๊ณ ์จ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ๋ชจ๋ ํํ๋ฌผ์ง์ ๋ํด ์ต๊ณ ์จ๋๋ณด๋ค ๋์ ์ต์ ์จ๋๋ฅผ ๊ฐ์ง ํํ๋ฌผ์ง์ ์ฐพ๋๋ค
4. ์ฐพ์ผ๋ฉด ์นด์ดํธ๋ฅผ ์ฌ๋ฆฌ๊ณ , ์ต๊ณ ์จ๋๋ฅผ ๊ฐฑ์ ํด์ค๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
for(int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
arr[i][0] = Integer.parseInt(st.nextToken()); //์ต์ ๋ณด๊ด ์จ๋
arr[i][1] = Integer.parseInt(st.nextToken()); //์ต๊ณ ๋ณด๊ด ์จ๋
}
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[1] == o2[1]) { //์ต๊ณ ์จ๋ ๊ฐ์ผ๋ฉด
return o1[0] - o2[0]; //์ต์ ์จ๋ ์ค๋ฆ ์ฐจ์
}else {
return o1[1] - o2[1]; //์ต๊ณ ์จ๋ ์ค๋ฆ ์ฐจ์
}
}
});
int count = 1;
int high = arr[0][1]; //์ต๊ณ ์จ๋๊ฐ ๊ธฐ์ค
for(int i = 1; i < N; i++) {
if(arr[i][0] > high) {
count++;
high = arr[i][1];
}
}
System.out.println(count);
}
}
๊ฒฐ๊ณผ
๋ฒ์ธ - ์ฒ์ ์คํจํ ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
for(int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
arr[i][0] = Integer.parseInt(st.nextToken()); //์ต์ ๋ณด๊ด ์จ๋
arr[i][1] = Integer.parseInt(st.nextToken()); //์ต๊ณ ๋ณด๊ด ์จ๋
}
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[1] == o2[1]) { //์ต๊ณ ์จ๋ ๊ฐ์ผ๋ฉด
return o1[0] - o2[0]; //์ต์ ์จ๋ ์ค๋ฆ ์ฐจ์
}else {
return o1[1] - o2[1]; //์ต๊ณ ์จ๋ ์ค๋ฆ ์ฐจ์
}
}
});
int count = 0;
int high = -271; //์ต๊ณ ์จ๋๊ฐ ๊ธฐ์ค
for(int i = 0; i < N; i++) {
if(arr[i][0] >= high) {
count++;
high = arr[i][1];
}
}
System.out.println(count);
}
}
์ต๊ณ ์จ๋๋ฅผ ๋ฌธ์ ์์ ์ ์ํ ์ต์ ๊ฐ์ผ๋ก ์ค์ ํ๊ณ , ๋ฐฐ์ด์ 0๋ฒ์งธ๋ถํฐ ์์ํด์ ๋๋ ธ๋ค. ํ์ง๋ง ๋ชจ๋ ํ ์คํธ์ผ์ด์ค๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค. ๊ธฐ์ค์ 0๋ฒ์งธ์ ์ต๊ณ ์จ๋๋ก ์ค์ ํ๊ณ ํ๊ณ , ๋ฐฐ์ด์ 1๋ฒ์งธ๋ถํฐ ์์ํด์ ๋๋ฆฌ๋ ๋๋ค.