코딩 테스트/파이썬 문제 풀이
[백준] 1931번 파이썬 - 그리디
DaraDaraV
2024. 1. 19. 21:16
728x90
반응형
문제요약 (1931. 회의실 배정)
한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
그리디 알고리즘을 사용해야한다는 생각을 반드시 해야한다.
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
풀이를 위한 부연 설명
- 회의실은 끝내는 시간을 기준으로 정렬한다.
- 또한 같은 시간이면 회의시간이 짧은 시간이 좋다. 즉, 회의 첫 시작이 앞에 있는 것이 좋다.
- 다음 회의를 위해서는 회의 첫 시작 시간이 회의 끝나는 시간이어야합니다.
- 그리디에 대한 자세한 개념 설명과 연관 문제는 다음 링크를 참고하면 된다.
[코테 알고리즘] 그리디 / 관련 문제
본 글은 "나동빈"님의 [이것이 코딩 테스트다]를 참고하여 작성하였으며, 필자가 직접 문제를 풀며 관련된 문제들을 찾아 정리하였습니다. 시리즈 보기 [코테 알고리즘] 파이썬 기본 / 관련 문제
daradarav.tistory.com
코드
import sys
input = sys.stdin.readline
n = int(input())
table = [[0]*2 for _ in range(n)]
for i in range(n):
start, end = map(int, input().split())
table[i][0] = end
table[i][1] = start
table.sort()
cnt = 0
end = -1
for i in range(n):
if table[i][1] >= end:
end = table[i][0]
cnt += 1
print(cnt)
기억할 점
- 정렬 기준을 생각해야한다.
반응형