Algorithm/백준

[Python] 백준 1931번 '회의실 배정'

코딩쪼앙 2023. 1. 17. 17:25

문제

 

1931번: 회의실 배정

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

www.acmicpc.net

입력

  • 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거나 같은 자연수 또는 0이다.

출력

  • 첫째 줄에 최대 사용할 수 있는 회의의 최대 개수를 출력한다.

문제 풀이

  • 각 회의시간을 비교하기 위해 time 리스트에 저장
  • 이전 회의가 끝난 시간과 시작하려는 회의가 시작하는 시간이 같거나 시작하려는 시간이 더 늦어야 회의 가능
  • 최대 회의 시간을 세기 위해, 회의가 일찍 끝나는 순으로 정렬한 후, 만약 같다면, 더 일찍 시작하는 회의 순으로 정렬
  • 정렬을 마친 후, 회의가 끝난 시간과 시작하려는 시간을 비교하여 같거나 크다면 카운트
  • 카운트 한 후, 회의가 끝나는 시간 업데이트
  • 회의 가능한 수 출력

코드

n = int(input())
time = []
end_time = 0
count = 0
for _ in range(n):
    time.append(list(map(int,input().split())))
time = sorted(time,key = lambda x:(x[1],x[0]))
for i, j in time:
    if end_time <= i:
        count += 1
        end_time = j
print(count)

람다 함수

 

파이썬 코딩 도장: 32.1 람다 표현식으로 함수 만들기

Unit 32. 람다 표현식 사용하기 지금까지 def로 함수를 정의해서 사용했습니다. 이번에는 람다 표현식으로 익명 함수를 만드는 방법을 알아보겠습니다. 람다 표현식은 식 형태로 되어 있다고 해서

dojang.io