본문 바로가기

코딩 이야기/백준 풀이

백준 1931번: 회의실 배정 파이썬 코드(그리디 알고리즘)

반응형

https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Python-logo-notext.svg/600px-Python-logo-notext.svg.png

import sys

n = int(sys.stdin.readline())

mm = [] #mm은 회의실 목록
temp = 0
count = 0


for _ in range(n):
    start, end = map(int, sys.stdin.readline().split())
    mm.append([end,start])

mm = sorted(mm)
for i in range(n):
    if i == 0:
        temp = mm[i][0]
        count += 1
    else:
        if temp <= mm[i][1]:
            temp = mm[i][0]
            count += 1

print(count)
설명

그리디 알고리즘을 사용한다. 하지만 회의실 목록을 정렬을 할 때, 끝나는 시간을 기준으로 정렬을 해야해서, 리스트에 값을 넣을때 end가 먼저 오도록 넣었다. 이후에 포문을 n만큼 돌려서 i == 0 일때, temp에 end 값을 저장하고, count를 1 올려준다. 그리고 그 이후로는 temp 보다 i번째 회의실 목록의 시작 시간이 크거나 같을때, temp를 변경하고 count를 1 올려주는 식으로 코딩하였다.

문제점

구현자체는 문제 없었는데, 문제를 꼼꼼히 안 읽어서 회의 간에 끝나는 시간과 시작하는 시간이 같아도 되는 지 헷갈려서, 한번 틀린 후에 <를 <=로 수정하여 제출하니 바로 맞았다.

반응형