본문 바로가기
백준알고리즘

[Java][정렬][그리디 알고리즘] 백준 1931 회의실 배정

by tiit 2021. 5. 2.
반응형

package codinginterview;

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 BJ1931 {

public static void main(String[] args) throws NumberFormatException, IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st;
    int n = Integer.parseInt(br.readLine());

    int [][] time = new int[n][2]; // 0은 시작 , 1은 종료 

    for(int i =0; i<n; i++) {
        st = new StringTokenizer(br.readLine()," ");
        time[i][0] = Integer.parseInt(st.nextToken());    //시작
        time[i][1] = Integer.parseInt(st.nextToken());    //종료 
    }

    Arrays.sort(time, new Comparator<int[]>() {

        @Override
        public int compare(int[] o1, int[] o2) {
            // 종료시간이 같을 경우 시작시간이 빠른 순으로 정렬해야한다. 

            if(o1[1] == o2[1]) {
                return o1[0] - o2[0];    //음수 or 0이면 자리 안바뀜, 양수면 자리 바뀜
            }

            return o1[1] - o2[1];    //종료시간 앞에가 더 크면 자리 바꿈 --> 종료시간 작은 순으로 정렬
        }

    });

    int count = 0;
    int prev_end_time = 0;

    for(int i=0; i<n; i++) {
        //직전 종료시간이 다음 회의 시작 시간보다 작거나 같다면 더해주기 
        if(prev_end_time <= time[i][0]) {
            prev_end_time = time[i][1];
            count++;
        }
    }

    System.out.println(count);
}

}

이것은 어려워서 .....
블로그 베꼈는데요
풀수 없었던 이유 ..
Comparator 를 몰랐네요 ㅋ
아니 언젠가는 써봤겠지만 제 기억속에는 없네요
다신 잊지 않기 ><
머 제가 문제 다풀면 천재게요~?
열심히해야져 그럼 eman

반응형

댓글