3은로그

백준 1931 - 회의실 배정 (정렬) 본문

코딩테스트

백준 1931 - 회의실 배정 (정렬)

3은 2023. 1. 9. 16:12
728x90

https://www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

그리디 알고리즘과 정렬 관련 문제이다. 

그리디 알고리즘에 관한 내용 이전에 올려두었다. 

https://3eeunn.tistory.com/2

 

코딩테스트 1주차 - 그리디알고리즘

그리디 알고리즘 그리디 알고리즘은 결정의 순간에 모든 경우를 보지 않고 근시안적인 최선의 선택을 하는 알고리즘이다. 즉, 지금의 선택이 앞으로 남은 선택들에 어떤 영향을 끼칠지 고려하

3eeunn.tistory.com

 

핵심은 종료시간이 빠른 순으로 정렬하고 회의 시간이 겹치지 않도록 하나씩 선택하는 것이다.

 

 

import java.util.Arrays;
import java.util.Scanner;

public class p1931_회의실배정 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int  n;     //회의의 수
        int[][] arr;
        int count = 0;	
        int temp = 0;

        n = scan.nextInt();
        arr = new int[n][2];

        for(int i = 0; i < n; i++){
            arr[i][0] = scan.nextInt();
            arr[i][1] = scan.nextInt();
        }

        Arrays.sort(arr,(o1,o2) -> {        //종료시간을 기준으로 정렬
            if(o1[1] == o2[1]){
                return Integer.compare(o1[0], o2[0]);	//종료시간이 같으면 시작시간이 빠른 순으로 정렬
            }
            else {
                return Integer.compare(o1[1],o2[1]);
            }
        });


        for(int i = 0; i < n; i++){
            if(arr[i][0] >= temp){	
                temp = arr[i][1];
                count++;
            }
        }

        System.out.println(count);
    }
}

 

 

중간에 잘못 생각한 부분이 있어서 계속 틀렸습니다가 나왔는데 이유도 모르고 넘 답답해서 결국 구글링해서 풀었다. 

며칠동안 나눠 풀어서 왜 그런 코드를 적었는지도 잘 생각이 안나서 틀린 이유를 못찾았다. 

이제 한문제는 무조건 한번에 끝내야겠다.

'코딩테스트' 카테고리의 다른 글

BFS - 자바(JAVA)  (0) 2023.02.06
백준 5567 - 결혼식(그래프) 자바 JAVA  (0) 2023.02.06
백준 9076 - 점수집계 (정렬)  (0) 2023.01.06
백준 23278 - 영화평가 (정렬)  (1) 2023.01.03
백준 1260번 DFS와 BFS  (0) 2022.11.15