๋ฌธ์ :
๋ถ์ :
์ด ๋ฌธ์ ๋ ๋ํ์ ์ธ greedy algorithm์ผ๋ก ํธ๋ ๋ฌธ์ ์ด๋ค. ํ์์ค, ๊ฐ๋ฐฉ ๋ฐฐ๋ญ ๋ฑ ๊ณ ์ ์ ์ธ ๋ฌธ์ ์ ํ์ธ๊ฑฐ ๊ฐ๋ค.
๋ฒกํฐ์ ์ธํ๊ฐ์ ๋ชจ๋ ๋ด์ ๋ค ํต์ฌ์ ํ์๊ฐ ๋๋๋ ์๊ฐ second ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ํ๋ ๊ฒ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ for๋ฌธ์ ๋๋ฉด์ ๊ฒ์ฌํ๋๋ฐ ์ด์ ํ์์ ๋๋๋ ์๊ฐ < ๋ค์ ํ์ ์๊ฐ ์ด๋ฉด์ ํ์๊ฐ ์์ ๋ ์ ์๋ ๊ฒ์ด๋ฏ๋ก cnt ๊ฐ์ ์ฆ๊ฐ์์ผ ํ์์ ๊ฐฏ์๋ฅผ ์ ๋ค.
c++ ์ฝ๋ :
//
// 1931_room.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/10.
//
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int assign_meeting_room(int n, vector<pair<int, int>> v){
int cnt = 1; // ์ ์ผ ๋นจ๋ฆฌ ๋๋๋ ๊ฑฐ ์ผ๋จ ๋ฃ์ด ๋๊ธฐ
sort(v.begin(), v.end(), [](auto &left, auto &right) { // second ์์ผ๋ก ์ ๋ ฌ
if(left.second == right.second){
return left.first < right.first;
}
return left.second < right.second;
});
int before_meet = 0;
for(int i = 1; i < (int)v.size(); i++){
if(v.at(i).first >= v.at(before_meet).second){
cnt++; //put meeting
before_meet = i;
}
}
return cnt;
}
int main(){
int n;
cin >> n;
vector<pair<int, int>> v;
int start, finish;
for(int i =0; i < n; i++){
cin >> start >> finish;
v.push_back(make_pair(start, finish));
//cout << v[i].front().first << v[i].front().second << endl;
}
int count = assign_meeting_room(n, v);
cout << count << endl;
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ Floyd Warshall (0) | 2021.02.18 |
---|---|
[๋ฐฑ์ค] 2178 ๋ฏธ๋ก ํ์ bfs (0) | 2021.02.17 |
[๋ฐฑ์ค] 19598 ์ต์ ํ์์ค ๊ฐ์ (0) | 2021.02.17 |
[๋ฐฑ์ค] 10818 ์ต์, ์ต๋ (0) | 2021.02.16 |
[๋ฐฑ์ค] 2110 ๊ณต์ ๊ธฐ ์ค์น (0) | 2021.02.16 |
๋๊ธ