백준 1931번: 회의실 배정

DAN·2022년 12월 8일
0
post-thumbnail

풀이

그리디 알고리즘 문제다.
그리디 알고리즘은 데이터들을 정확한 기준으로 정렬한 후,
특정 조건의 성립 여부를 확인하는 게 핵심이다.

이미지 출처

해당 문제는 종료시간을 기준으로 정렬한 후,
앞 회의의 종료시간 이후에 시작하는 회의 중 가장 빨리 끝나는 회의를 뒤에 붙이면 해결된다.

틀렸습니다.

제출 후 마지막 쯤 '틀렸습니다.'를 받았다.
어떤 예시가 있을까 생각해보니

3
3 4
2 2
0 2

종료시간을 기준으로 정렬을 하다보니

(0,2)(2,2)(3,4) vs (2,2)(3,4)

종료시간이 같고 시작시간이 다른 경우를 빼먹었었다.

정렬할 때 종료시간이 같은 경우 시작을 비교하는 조건을 추가했다.

public int CompareTo(Meeting? other)
{
    if(this.endTime > other.endTime){
        return 1;
    }
    else if (this.endTime == other.endTime){
        // 3
        // 3 4
        // 2 2
        // 0 2
        if(this.startTime > other.startTime){
            return 1;
        }
        else if (this.startTime == other.startTime){
            return 0;
        }
        else{
            return -1;
        }
    }
    else{
        return -1;
    }
}

전체소스

0개의 댓글