📍 그리디 알고리즘
단계 별로 가장 좋은 것을 선택하는 알고리즘.
정렬하여 차례차례 선택해 나가면 된다.
1. 현재 상태에서 가장 좋은 것을 선택
2. 문제 조건을 만족하는지 검사
3. 원래 문제가 해결되었는지 검사, 해결되지 않았다면 다시 1번으로 돌아가 반복한다.
📌
<input>
5
1 4
2 3
3 5
4 6
5 7
# solve:
1. 종료시간이 가장 빠른 회의 순서대로 나열한다.
2. 끝나는 시간==시작하는 시간이면 사용할 수 있는 회의+=1 을 한다.
✔️ code
n=int(input())
meeting=[]
for i in range(n):
s, e=map(int, input().split())
meeting.append((s, e))
#정렬 순위 종료시간->시작시간
meeting.sort(key=lambda x: (x[1], x[0]))
et=0 #끝나는 시간
cnt=0 #회의 수
for s, e in meeting:
if s>=et:
et=e
cnt+=1
print(cnt)
>>>
처음에 정렬 기준을 시작 시간으로 해서 원하는 답이 나오지 않고 코드가 굉장히 복잡해졌다.
회의가 빨리 끝나야 더 많은 회의를 할 수 있다는 걸 깨닫을 때까지 굉장히 오래 걸렸다 --;; 단순한데..
'알고리즘' 카테고리의 다른 글
[그리디] 창고 정리 (0) | 2022.03.03 |
---|---|
[그리디] 씨름 선수 (0) | 2022.03.02 |
[알고리즘] 프로그래머스 키패드 누르기 (0) | 2022.03.01 |
[결정 알고리즘] 마구간 정하기 (0) | 2022.02.28 |
[결정 알고리즘] 뮤직비디오 (0) | 2022.02.26 |