https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=392
Softeer
제한시간 : C/C++(1초), Java/Python(2초) | 메모리 제한 : 256MB 김교수는 강의실 1개에 최대한 많은 강의를 배정하려고 한다. 배정된 강의는 서로 겹치지 않아야 하며 수업시간의 길이와 상관없이 최대
softeer.ai
[난이도] level3
[유형] Greedy
[풀이]
강의 종료 시간을 기준으로 정렬하고 0번 강의는 무조건 선택한 뒤,
그 다음 추가가 가능한 강의를 index가 낮은 순서부터 탐색하면서 선택해주면 가장 많은 수의 강의를 추가할 수 있습니다.
현재 선택한 강의의 종료시간보다 다음 강의의 시작시간이 더 늦거나 같으면 선택할 수 있는 강의입니다.
#include <cstdio> #include <algorithm> using namespace std; pair<int,int> a[1000000]; int N,ans; int main(){ scanf("%d",&N); for(int i=0;i<N;i++) scanf("%d%d",&a[i].second,&a[i].first); sort(a,a+N); for(int i=0;i<N;i++){ int end = a[i].first; ans++; bool ok=0; for(int j=i+1;j<N;j++){ if(end<=a[j].second){ i=j-1; ok=1; break; } } if(!ok) break; } printf("%d",ans); }
https://github.com/has2/Problem-Solving/blob/master/softeer/level3/강의실_배정.cpp
'Problem-Solving > Softeer' 카테고리의 다른 글
[Softeer/소프티어][level4] 징검다리2 (C++) (0) | 2021.10.04 |
---|---|
[Softeer/소프티어][level3] 징검다리 (C++) (0) | 2021.10.04 |
[Softeer/소프티어][level4] H-클린알파 (C++) (0) | 2021.10.04 |
[Softeer/소프티어][level3] 성적 평균 (C++) (0) | 2021.10.04 |
[Softeer/소프티어][level3] 스마트 물류 (C++) (0) | 2021.10.04 |