일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 삼성코테
- 포스코 교육
- 삼성역량테스트
- 임베디드 딥러닝
- 자료구조
- MCU 딥러닝
- dfs문제
- 삼성역테
- bfs문제
- 포스코 AI교육
- 초소형머신러닝
- DP문제
- tflite
- 다이나믹프로그래밍
- dfs
- DP
- 컴퓨팅사고
- 알고리즘
- 코테 문제
- tinyml
- sort
- BFS
- 코테
- 코딩테스트
- 삼성코딩테스트
- 포스코 ai 교육
- 영상처리
- TensorFlow Lite
- 딥러닝
- 그리디
- Today
- Total
코딩뚠뚠
[백준문제풀이] 1931 회의실배정 본문
풀이일시 : 2020-10-16
문제 :
한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
입력 :
첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거나 같은 자연수 또는 0이다.
ex)
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14
출력 :
첫째 줄에 최대 사용할 수 있는 회의의 최대 개수를 출력한다.
ex)
4
풀이 :
대표적인 greedy 알고리즘 문제인 회의실배정 문제이다.
회의실을 배정해서 회의하는 시간이 가장 긴 것을 찾는게 아니고, 할 수 있는 회의의 최대 갯수를 찾는 문제이다.
그렇다면 첫번째 회의는 언제 시작하던 가장 빠른 시간에 끝나는 회의가 돼야 할 것이다.
그 다음번 회의도 그 다음으로 빨리 끝나는 회의가 와야 될것이므로 모든 회의들을 끝나는 시간대로 정렬해야 할 것이다. 회의실이 비어야 그 다음번 회의를 진행할 수 있으므로 시작시간과 끝나는시간이 겹치지 않는 조건도 설정해 주어야 할 것이다.
#include <iostream>
#include <cstdio>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
bool sortbysec(const pair<int, int>& a, const pair<int, int>& b) {
return (a.second < b.second);
}
int main() {
int N, i, n1, n2, min, cnt = 0;
cin >> N;
vector <pair <int, int> > v;
for (i = 0; i < N; i++) {
cin >> n1 >> n2;
v.push_back({ n1, n2 });
}
sort(v.begin(), v.end()); //정렬 후
sort(v.begin(), v.end(), sortbysec); //두번째 원소로 정렬
//끝나는 시간이 가장 빠른 순서대로 정렬되게 된다.
min = v[0].second;
cnt++;
for (i = 1; i < N; i++) { //0번은 한다치고 1번부터시작
if (v[i].first >= min) { //이전이 끝난다음 시작하는것중에 가장 시간이 적게걸리는거
min = v[i].second; //이것이 끝나는 시간을 min
cnt++;
}
}
printf("%d\n", cnt);
return 0;
}
참고자료 : sort
'알고리즘 문제풀이 > 백준문제풀이' 카테고리의 다른 글
[백준문제풀이] 1966 프린터 큐 (0) | 2021.01.02 |
---|---|
[백준문제풀이] 1744 수 묶기 (0) | 2021.01.02 |
[백준문제풀이] 2875 대회 or 인턴 (0) | 2021.01.01 |
[백준문제풀이] 10819 차이를 최대로 (0) | 2021.01.01 |
[백준문제풀이] 10971 외판원 순회2 (0) | 2021.01.01 |