본문 바로가기
Computer Science/Algorithm

[백준] 1931 - 회의실 배정 (Python)

by 수제햄버거 2021. 3. 27.
728x90
반응형

문제 출처 :

www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

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

www.acmicpc.net

문제 풀이 :

 

  • 이 문제에서 살펴보아야할 점은 끝나는 시간과 시작하는 시간이 같다면 바로 시작할 수 있다는 점이다.
  • 때문에 주어진 회의시간을 끝나는 시간, 시작 시간으로 정렬한 뒤에 가장 먼저 시작해서 짧은 거 순으로 넣으면 그것이 전체에서도 최대가 될 것이라고 생각한다.
  • 앞쪽에서 시간을 조금 잡아 먹을 수록 뒤에서 고려해 줄 수 있는 것이 많기 떄문이다.
  • 때문이 이것은 그리디로 풀 수 있다. 
n = int(input())
meeting = []
for i in range(n):
    start, end = map(int,input().split())
    meeting.append((start,end))

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

def greedy(a):
    start_time = 0
    meeting_cnt =0
    for time in a:n = int(input())
meeting = []
for i in range(n):
    start, end = map(int,input().split())
    meeting.append((start,end))

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

def greedy(a):
    start_time = 0
    meeting_cnt =0
    for time in a:
        if time[0] >= start_time:
            #print(time[0],end=' ')
            start_time = time[1]
            #print(start_time)
            meeting_cnt +=1
    return meeting_cnt

print(greedy(meeting))
        if time[0] >= start_time:
            #print(time[0],end=' ')
            start_time = time[1]
            #print(start_time)
            meeting_cnt +=1
    return meeting_cnt

print(greedy(meeting))
반응형