개발자 블로그

1931번: 회의실 배정 본문

알고리즘/백준

1931번: 회의실 배정

hayongwoon 2022. 6. 28. 16:09

문제 링크

 

1931번: 회의실 배정

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

www.acmicpc.net

 

나의 풀이

n = int(input())
meeting_times = [tuple(map(int, input().split())) for _ in range(n)]

meeting_times.sort(key=lambda x: (x[1], x[0]))
stack = [meeting_times[0]]

for i in meeting_times[1:]:
    if i[0] >= stack[-1][1]:
        stack.append(i)

print(len(stack))

1) 입력값을 튜플형태로 리스트로 받는다.

2) 우선순위 정렬을 끝나는 시간 -> 시작하는 시간 순으로 정렬 

* 정렬을 할 때, 우선순위에 따라 복수의 key를 설정할 때, 위와 같이 key=(1순위, 2순위, 3...) 순으로 두면 된다. 이번 문제의 핵심

 

3) stack의 자료구조를 활용해서 끝나는 시간과 다음 시작하는 시간이 조건에 맞으면 추가! 

4) stack의 길이가 최고 회의의 갯수

'알고리즘 > 백준' 카테고리의 다른 글

2667번 단지번호붙이기  (0) 2022.07.17
1406번 에디터  (0) 2022.07.05
2750번: 수정렬하기2  (0) 2022.07.04
10610번 '30'  (0) 2022.07.01
13305번 주유소  (0) 2022.06.30