백준1931 - 회의실 배정 (정렬) Python 본문
반응형
https://www.acmicpc.net/problem/1931
해당 문제는 N개의 회의와 각각의 회의의 회의 시작 시간, 끝 시간이 존재할 때 회의실을 사용할 수 있는 최대의 경우를 출력하는 문제다.
문제 풀이 방식
먼저 회의실을 사용하지 않는 경우인 배열(result)을 기본값을 0(어떤 값이든 들어올 수 있는 값)으로 초기화하여 정의했다.
이후 회의실은 시간순에 따라 순차적으로 되기 때문에 정렬이 우선적으로 필요한데, 이때 끝시간이 짧은 것을 우선 순위로 두어야 한다.
(만약 [1 5, 2 3, 3 4] 값이 입력값으로 주어질 때 시작 시간을 우선 순위로 두어 정렬할 경우, 회의를 한 번 밖에 할 수 없기 때문임.)
이후 배열에 들어가 있는 마지막 값(가장 최근 회의의 끝 시간)과 시작 시간을 비교한 뒤, 배열에 끝 시간을 넣어주는 것을 반복문으로 처리해주면 된다.
import sys
data_temp = sys.stdin if sys.platform == 'linux' else open('입력.txt', 'r')
input_data = data_temp.read().splitlines()
def solution (data) :
n = int(data.pop(0))
arr = [list(map(int, x.split())) for x in data]
_sort = sorted(arr, key = lambda x : (x[1], x[0]))
result = [0]
for i in range(n) :
if _sort[i][0] >= result[-1] :
result.append(_sort[i][1])
print(len(result) - 1)
solution(input_data)
반응형
'개발 > algorithm' 카테고리의 다른 글
프로그래머스 - Lv.3 메뉴 리뉴얼 (백트래킹) node.js (0) | 2023.12.07 |
---|---|
프로그래머스 - Lv.2 호텔 대실 (정렬) node.js (0) | 2023.12.06 |
백준18223 - 민준이와 마산 그리고 건우 (데이크스트라) Python (0) | 2023.12.04 |
백준7562 - 나이트의 이동 (BFS) node.js (1) | 2023.12.03 |
백준11722 - 가장 긴 감소하는 부분 수열(DP) node.js (1) | 2023.12.02 |
Comments