백준(Python) 1931: 회의실 배정


문제

백준(Python) 1931: 회의실 배정

(사진을 누르면, 백준 사이트로 이동합니다)

풀이

아 진짜 이거 잘 풀었다고 생각했는데, 백준에서 제출 4번 다 틀렸었다 ㅋㅋㅋㅋㅋ.

이 문제에서 핵심은 각 회의 시간의 정보를 올바르게 정렬하는 것이었다. 근데, 처음엔 종료시간만 빠르면 되겠지 싶어서, 종료시간 순으로 정렬해서 넣어서 계속 틀렸다.

즉, 처음에 정렬이 (1,2)/ (4, 4) / (2,4) 이런 식이었다. 이걸 최대로 넣으려면, (1,2), (2,4), (4,4) 이렇게 넣어야 하는데, 앞에서부터 무지성으로 (1,2)와 (4,4)를 넣다보니 (2,4)를 못 넣게 되었던 것이다.

그래서 튜플 정렬을 x[1]을 기준으로 한 후, 다시 x[0]으로 할 수 있도록 만드니 해결이 되었다.


#1931

# 회의의 수 입력
N = int(input())

# 각 회의 정보 입력
m_list = [] 
for i in range(N):
    # (a, b) 시작시간, 종료시간
    a,b = map(int, input().split())
    m_list.append((a,b))

#끝나는 시간순+ 일찍 시작하는 순으로 정렬
sorted_list = sorted(m_list, key = lambda x : (x[1],x[0]))

#회의 배치 및 첫 시간 넣기
final_list = []
final_list.append(sorted_list[0])

# (c, d) 시작시간, 종료시간
for i in range(1,len(sorted_list)):
    if sorted_list[i][0] >= final_list[-1][1]:
        final_list.append(sorted_list[i])

# 회의 최대 개수 출력
print(len(final_list))


CATEGORIES:

Tags:

No Responses

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다