BAEKJOON (Python)/Greedy Algorithm

BAEKJOON_1931 "회의실 배정" PYTHON

RiLLa_0511 2023. 4. 15. 22:12
728x90

[백준] 1931번 Python 파이썬

 

https://www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

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

www.acmicpc.net

 

< 틀린 코드 >

 

회의가 시작하는 시간을 기준만 생각하여 문제를 풀었더니 틀렸다는 결과가 나왔다.

import sys
n = int(sys.stdin.readline())
conf = []

for _ in range(n):
    info = list(map(int, sys.stdin.readline().split()))
    conf.append(info)

conf.sort()
start = conf[0][1]
count = 1

for i in range(1, n):
    if start <= conf[i][0]:
        count += 1
        start = conf[i][1]
    else:
        continue
            
print(count)

 

< 수정된 코드 >

 

sort 함수를 이용해서 오름차순 정렬을 할 때 우선 끝나는 시간을 기준으로 정렬한 후, 끝나는 시간이 같을 경우 시작 시간을 기준으로 정렬해주었다. 

 

start 변수에 첫 번째 회의가 끝나는 시간을 할당하고, count 변수에 첫 번째 회의가 포함되어 있으므로 1로 초기화 해준다. 

import sys
n = int(sys.stdin.readline())
conf = []

for _ in range(n):
    info = list(map(int, sys.stdin.readline().split()))
    conf.append(info)

conf.sort(key = lambda x: (x[1], x[0]))
start = conf[0][1]
count = 1

for i in range(1, n):
    if start <= conf[i][0]:
        count += 1
        start = conf[i][1]
    else:
        continue
            
print(count)

혼자 공부하며 올리는 블로그입니다. 틀린 내용은 댓글 남겨주시면 감사하겠습니다.