백준|1931번|회의실 배정

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
19/136

문제설명
한 회의실에서 시간별로 회의를 하는데 그 회의들의 시작 시간과 종료 시간들을 입력받고 최대 몇개의 회의를 할 수 있는지 출력하는 프로그램입니다.

작동 순서
1.입력받을 회의의 개수를 입력받는다.
2.회의의 시작 시간과 종료 시간을 입력받는다.
3.회의 시간을 종료시간이 빠른 순으로 정렬하고 종료시간이 같은 경우 시작시간이 빠른 순으로 정렬합니다.
4.가장 빨리 끝나는 종료 시간을 now에 저장합니다.
5.반복문을 통해 now와 각 회의의 시작시간들을 비교하고 시작 시간이 더 늦은 시간인 경우 count에 1을 더하고 그 회의의 종료시간을 now에 저장합니다.
6.count를 출력합니다.

소스코드

import sys
time = []
count = 1
for i in range(int(sys.stdin.readline())):
    time.append([])
    start, end = (map(int, sys.stdin.readline().split()))
    time[i].append(start)
    time[i].append(end)
time.sort(key=lambda x: (x[1], x[0]))
now = time[0][1]
for i in range(1, len(time)):
    if time[i][0] >= now:
        count += 1
        now = time[i][1]
print(count)

후기
아직 알고리즘 문제를 많이 풀어보지 않아서 초반에 다소 어려움을 많이 느꼈던 문제이지만 종료 시간이 빠른 순으로 정렬을 해야한다는 것을 알게 된 후에는 쉽게 풀 수 있었습니다.

profile
INTP 개발자 지망생

0개의 댓글