1. ๋ฌธ์ ์ค๋ช ๐
๋ฌธ์ ์ค๋ช ์ด ์ง๊ด์ ์ด๋ผ ์ถ๊ฐ ์ค๋ช ์๋ต
2. ์ ๊ทผ ๋ฐฉ์ ๐๏ธ
KEY WORD
: GREEDY ALGORITHM
(1) ํ์์ ์์ ์๊ฐ๊ณผ ๋ ์๊ฐ์ ๋ฌถ์ด์ ํ๋์ ๊ฐ์ฒด๋ก ๋ง๋ค๊ธฐ. ๋ ์ด ๊ฐ์ฒด๋ค์ ArrayList๋ก ๋ฌถ๊ธฐ
(2) ํ์๋ฅผ ๋ ์๊ฐ
์ด ๋น ๋ฅธ ์์ผ๋ก ์ ๋ ฌ (๋ ์๊ฐ์ด ๊ฐ๋ค๋ฉด ์์ ์๊ฐ์ด ๋น ๋ฅธ ์์ผ๋ก ์ ๋ ฌ)
(3) int prev_end_time
์ด๊ธฐ๊ฐ: ArrayList.get(0)์ ๋์๊ฐ
(4) ArrayList๋ฅผ ์ํํ๋ฉฐ prev_end_time <= now.startTime
์ธ ๊ฒฝ์ฐ ans_cnt +1 ์ฌ๋ฆฌ๊ณ , prev_end_time = now.endTime์ผ๋ก ๊ฒฝ์
(1) Greedy Algorithm ์ธ ๊ฒ์ ์ด๋ป๊ฒ ์์๋? ๐ค
๊ฒฐ๋ก : ํ์๋ฅผ ๋ ์๊ฐ ์์ผ๋ก ์ ๋ ฌ ํ์ ๋, ์์๊ฐ [meeting A, meeting B, meeting C, ...] ์์ผ๋ก ๋์ด ์์ ๋, meeting A์ meeting C๋ฅผ ๋ฐฐ์ ํ ์ ์๋ค๋ฉด, meeting B๋ก๋ meeting C๋ฅผ ๋ฐฐ์ ํ ์ ์๋ค. ๋ฐ๋ฉด A์ C๊ฐ ์ฐ๋ฌ์ ๋ฐฐ์ ์ด ๊ฐ๋ฅํ๋ค๋ฉด B์ C๋ ์ฐ๋ฌ์ ๋ฐฐ์ ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ์ด์ฉ๋ฉด A โ B โ C ๋ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ๋งจ ์ฒ์ ๊ฐ๋ถํฐ ์ต๋ํ ๋ง์ด ๊ณ ๋ฅด๋ ๊ฒ์ด ์ํด๋ฅผ ๋ณด์ง ์๊ธฐ ๋๋ฌธ์ Greedy Algorithm์ด ๋๋ค.
A๋ฅผ ๊ณ ๋ฅด๋ฉด A โ B โ C๋ ๊ฐ๋ฅํด์ง๊ณ , ์๋๋ฉด A โ C๋ฅผ ๊ณ ๋ฅด๋ฉด ๋๋ค. ๋ฐ๋ฉด A โ B๊ฐ ์๋๋ค๊ณ ๋ฐ๋ก B ๋ถํฐ ์์ํด๋ฒ๋ฆฌ๋ฉด ๊ณ ๋ฅผ ์ ์๋ ๊ฐ์๊ฐ B โ C๋ก ์ ํ๋๋ค.
3. ์ฝ๋ ์๊ฐ ๐
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
int ans = 1;
int prev_end_time = 0;
int N;
Meeting [] meetings;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
meetings = new Meeting[N];
for (int i = 0; i < N; i++) {
StringTokenizer st= new StringTokenizer(br.readLine());
meetings[i] = new Meeting(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
Arrays.sort(meetings, (o1,o2) -> {
if(o1.e == o2.e) return o1.s - o2.s;
return o1.e - o2.e;
});
prev_end_time = meetings[0].e;
for (int i = 1; i < N; i++) {
Meeting now = meetings[i];
if(prev_end_time <= now.s) {
ans++;
prev_end_time = now.e;
}
}
System.out.println(ans);
}
}
class Meeting {
int s;
int e;
public Meeting(int s, int e){
this.s = s;
this.e = e;
}
public String toString() {
return s+ " ~ " + e;
}
}
4. ๋ฐฐ์ด ๊ฒ๋ค ๐ฏ
(1) ๋ฐ๋ก ์ฒ๋ฆฌ
๋ ์๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ, ์์ ์๊ฐ์ด ๋น ๋ฅธ ์์ผ๋ก ์ ๋ ฌํด์ผ, ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ๋ ํ ์ ์๋ค.
๋ฐ๋ก
3
4 4
1 4
5 6
๋ ์๊ฐ ๊ฐ์ ๋, ์์ ์๊ฐ ์ค๋ฆ ์ฐจ์ ์ํด์ฃผ๋ฉด 2๊ฐ๋ฐ์ ๋ชป ๊ณ ๋ฆ. ๋ต์ 3๊ฐ ๋ค ๊ณ ๋ฅด๋ ๊ฒ์.