본문 바로가기
알고리즘/BOJ

[BOJ] 1931번 회의실 배정 / 사용언어 : 파이썬(python)

by 바른 호랑이 2021. 12. 24.
728x90
반응형

※ 문제링크

 

1931번: 회의실 배정

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

www.acmicpc.net

해당 문제는 그리디 알고리즘과 접목하여 풀어야하는 문제였다. 가능한 회의 수의 최댓값을 구해야하는 문제로, 정렬과 반복문을 통해 문제를 해결하였다. 처음에는 끝나는 시간만 오름차순으로 정렬하여 문제를 풀었는데, (0, 1) (1, 1)을 입력받았을 때, 정렬 후 (1,1) (0,1)로 정렬되어 잘못된 결과를 출력하는 문제가 있었다. 해당 문제를 해결할 방법을 고민하다 파이썬 정렬 함수의 기능 중 정렬기준을 2개이상으로 선정하여 정렬하는 방법이 있어 해당 방법을 사용하였다. 자세한 풀이방법과 코드는 아래와 같다.

1. 입력값을 받고, 해당 값으로 리스트를 생성한다.

2. 생성한 리스트를 회의종료시간, 회의시작시간을 기준으로 정렬한다.

3. 회의종료시간이 다음회의 시작시간보다 작거나 같으면 카운트에 +1을 하고, 확인값을 다음회의 종료시간으로 변경한다.

4. 반복문을 모두 돌린 후 cnt값을 출력한다.

 

N = int(input())
c_list = [list(map(int, input().split()))for _ in range(N)]
c_list.sort(key = lambda x: (x[1], x[0]))
cnt = 0
value = 0  
for i in range(N):
    if c_list[i][0] >= value:  
        cnt += 1
        value = c_list[i][1]
print(cnt)

 

P.S 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.

728x90
반응형

댓글