https://www.acmicpc.net/problem/9576
์ฝ๋
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 IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(bf.readLine());
StringTokenizer st;
for(int tc=0; tc<t; tc++) {
st = new StringTokenizer(bf.readLine());
int N = Integer.parseInt(st.nextToken()); // ์ฑ
์๋
int M = Integer.parseInt(st.nextToken()); // ๋๋ ์ค ํ์ ์
boolean[] checkBook = new boolean[N+1]; // ์ฑ
๋๋ ์คฌ๋์ง ์ฒดํฌ
int[][] arr = new int[M][2]; // a, b ์ํ๋ ํ์์ด ์ฑ
int count = 0; // ์ฑ
์ ์ค ์ ์๋ ์ต๋ ํ์์
for(int i=0; i<M; i++) {
st = new StringTokenizer(bf.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
// b ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์
Arrays.sort(arr, new Comparator<int[] >() {
@Override
public int compare(int[] o1, int[] o2) {
return Integer.compare(o1[1], o2[1]);
}
});
// ์ ๋ ฌ๋ ๊ธฐ์ค์ผ๋ก ์ฑ
๋น๋ ค์ฃผ๊ธฐ.
for(int i=0; i<M; i++) {
// a(arr[i][0]) ~ b(arr[i][1])๊น์ง ๊ฒ์
for(int j=arr[i][0]; j<=arr[i][1]; j++) {
// ์ฑ
์ ๋์ฌํด์ค ์ ์๋ ์ํ์ด๋ฉด ๋น๋ ค์ฃผ๊ณ ์ฒดํฌํ๋ค.
if(!checkBook[j]) {
count ++;
checkBook[j] = true;
break;
}
}
}
System.out.println(count);
}
bf.close();
}
}
ํ์ด
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ถ๋ฅ๋์ด ์์ด์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ์ด๋ณด๋ ค๊ณ ํ๋๋ฐ ์ด๋ถ๋งค์นญ, ๋คํธ์ํฌ ํ๋ก์ฐ? ๋ฑ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๋ ์์ด์ ๋์ด๋๊ฐ ๋๊ฒ ์ฑ ์ ๋์ด์๋ ๊ฒ ๊ฐ์๋ค.
๋ฌธ์ ๊ฐ 2์ฐจ์ ๋ฐฐ์ด์ ํ์์๊ฒ ๋๋ ์ค ์ ์๋ ์ฑ ์ ์ต๋ ๊ฐฏ์, ๋ญ๊ฐ ๋ฑ ๊ทธ๋ฆฌ๋ + ์ ๋ ฌ๋ก ํ๋ฆด ๊ฒ ๊ฐ์์ ์ ๋ ฌ์ ์ด๋ป๊ฒ ํด์ผํ ์ง ๊ณ ๋ฏผํ๋ค.
a์ด์ b์ดํ์ธ ์ฑ ์ค ๋จ์์๋ ์ฑ ํ๊ถ์ ๊ณจ๋ผ ํ์์๊ฒ ๋๋์ด์ค๋ค.
๊ทธ๋ผ a๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ง, b๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ง, ์ค๋ฆ์ฐจ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ ์ง๋ฅผ ์๊ฐํด๋ณด์๋ค.
a๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค๋ฉด ์ฑ ์ ์ต๋๋ก ๋๋ ์ค ์ ์๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ ๋ฐ๋ก๊ฐ ์๋ค.
a b= 1 5
a b= 2 2
a b= 1 5
์์ ์๋ฅผ a๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ฉด
1 5
1 5
2 2
๋ค์๊ณผ ๊ฐ์ด ๋๊ณ , ์์๋๋ก ํ๊ถ์ฉ ๋๋ ์ค๋ค๊ณ ํ๋ฉด ๊ฐ๊ฐ 1, 2 ์ฑ ์ ๋๋ ์ฃผ๊ณ , ๋ง์ง๋ง ํ์์๊ฒ๋ ์ฑ ์ ๋๋ ์ค ์ ์๋ค.
ํ์ง๋ง ๋ง์ง๋ง ํ์์๊ฒ 2, ์ฒซ๋ฒ์งธ ๋๋ฒ์งธ ํ์์๊ฒ 1, 3 ์๋๋ ์ฃผ๋ฉด ์ฑ ์ ์ ๋ถ ๋๋ ์ค ์๊ฐ ์๋ค.
๋ฐ๋ผ์ b๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
์์ ์๋ฅผ b๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ฉด
2 2
1 5
1 5
์ ๊ฐ์ด ๋๊ณ , ๋ฐ๋ก๊ฐ ์กด์ฌํ์ง ์๊ณ ์ฑ ์ ์ต๋๋ก ๋๋ ์ค ์ ์๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Codeforces] 1093A: Dice Rolling (0) | 2020.04.02 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์(Stack, 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ) (2) | 2020.03.31 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)ํ๊ฒ๋๋ฒ(dfs) (0) | 2020.03.30 |
[Codeforces] 1270A: Card Game (0) | 2020.03.29 |
[๋ฐฑ์ค] 4949๋ฒ: ๊ท ํ์กํ ์ธ์(์คํ, ๋ฌธ์์ด) (0) | 2020.03.27 |
๋๊ธ