티스토리 뷰

PS

[BaekJoon] 1931 회의실 배정 - python

언코딩 2022. 3. 1. 19:05

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

 

1931번: 회의실 배정

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

www.acmicpc.net

 

 

 

 

 

학교 알고리즘 수업시간에 배웠던 회의실 배정문제.. 어떻게 하는건지는 아는데 막상 코드로는 생각이 안났다.

 

 

 

내가 원래 짠 코드는 정말 복잡하고 보기 어려운 쓰레기(?) 코드였는데 인터넷을 찾아보다가 람다식으로 내가 하고자 했던 걸 완벽히 구현한 코드를 발견했다!! 정말 존경스럽다..

 

회의실 배정의 핵심 풀이는 회의의 종료시간이 가장 이른 것을 우선적으로 선택하는 것이다.

따라서 맨 처음에 lambda식으로 회의의 시작시간을 기준으로 먼저 정렬하고,

그 다음으로 회의의 종료시간을 기준으로 lambda식을 사용하여 한번 더 정렬해주면

너무나도 쉽게 회의시작 시간이 이르고 종료시간도 이른 것을 찾을 수 있다! 

 

 

import sys

n = int(input())
s = []

for i in range(n):
	str, end = map(int, sys.stdin.readline().split())    // str: 시작시간 end: 종료시간
    s.append([str, end])
    
s.sorted(s, key=lambda x:x[0])  // 시작시간 기준으로 먼저 정령하기
s.sorted(s, key=lambda x:x[1])  // 종료시간 기준으로 한번 더 정렬하기

last = 0
cnt = 0

for i, j in s:
	if i >= last:  // 시작시간이 마지막 시간(가장 최근에 정해진 회의의 종료시간)보다 크면
    	cnt += 1
        last = j   // last 갱신
        
print(cnt)

 

 

개인적으로 머리로 아는 거랑 직접 써먹을 줄 아는 거랑 너무나도 다르다는 것을 깨닫게 해준 문제였다.

람다식을 생활화하자!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함