<Algorithm> 39. 1931번 회의실
by BFine반응형
1. 1931번 회의실
최적의 경우를 이용하는 그디리 알고리즘 문제, 끝나는 시간을 판단하여 회의실을 배정 해야한다.
주의할점은 정렬을 두번 해주어야 한다. 끝나는 시간이 같은데 더 느린 경우가 생길 수 있기 때문이다.
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 48 49 50 51 52 53 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; 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)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); ArrayList<Time> aList = new ArrayList<>(); for(int i = 0; i < N; i ++) { st = new StringTokenizer(br.readLine()); aList.add(new Time(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()))); } Collections.sort(aList,new Comparator<Time>() { @Override public int compare(Time o1, Time o2) { if(o1.end == o2.end) { return o1.start - o2.start; } return o1.end - o2.end; } // 뒤에꺼 정렬 (같으면 앞에꺼 내림차 정렬) }); int endTime = aList.get(0).end; int count = 1; for(int i = 1 ; i < N ; i++) { if(endTime <= aList.get(i).start){ endTime = aList.get(i).end; count++; } } System.out.println(count); } } class Time{ int start; int end; public Time(int start, int end) { this.start = start; this.end = end; } } | cs |
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 41. 2468번 안전영역 (0) | 2018.08.09 |
---|---|
<Algorithm> 40. 11758번 CCW (0) | 2018.08.09 |
<Algorithm> 38. 11399번 ATM (0) | 2018.08.08 |
<Algorithm> 37. 1026번 보물 (0) | 2018.08.08 |
<Algorithm> 36. 7569번 토마토 (0) | 2018.08.08 |
블로그의 정보
57개월 BackEnd
BFine