1931번:회의실 배정

문제

image


코드

s=[]
f=[]
arr=[]
N=int(input(""))
for i in range(N):
    A,B=map(int,input("").split())
    arr.append([A,B])

arr.sort(key=lambda x:x[0])
arr.sort(key=lambda x:x[1])

for x,y in arr:
    s.append(x)
    f.append(y)
A=[0]
j=0

for i in range(1,N):
    if(s[i]>=f[j]):
        A.append(i)
        j=i
print(len(A))

설명

  • greedy방식으로 회의시간이 제일 먼저 끝나는 시각 기준으로 알고리즘을 풀어감
  • 위에 설명한 기준으로 오름차순 정렬
  • 제일빠른 시각에 끝나는 회의가 포함되기때문에 0 idx가 A에 기본적으로 존재
  • 회의 종료 시각이 가장 빠른 회의가 optimal solution의 항상 존재하는 이유 image

후기

  • 2차원 리스트의 정렬을 배울수 있어서 좋았다
  • 회의 시간이 겹치지 말라해서 같은시간이 두 번 들어올때까지 고려해서 시간초과났었음 EX) 4-4,4-4
  • 사실 아직 기준선정에 있어서 의아함이 풀리지 않은 상태




© 2021.11. by zziny

Powered by zziny