λ¬Έμ :
λΆμ :
μ΄ λ¬Έμ λ μ£Όμ΄μ§ μΈνμ λν΄ νμλ‘ λλ μ΅μ νμμ€ κ°μλ₯Ό ꡬνλ λ¬Έμ λ€. greedyλ₯Ό μ΄μ©ν΄ νμκ³
νμμ€μ΄ 3κ°, νμμ€ μ΄μ© μκ°μ
0 40
15 30
5 10 μΌλ‘ μ£Όμ΄μ§ λ
1. νμ μμ μκ°μ κΈ°μ€μΌλ‘ μ λ ¬μ νλ€.
0 40
5 10
15 30
ν¨μ μμμ μ²μμ 0, 40μ vv vectorμ λ΄μ λ€ v ν¨μ λ€ λ λκΉμ§ vv ν¬κΈ°λ§νΌ ifλ¬Έμ λκ²λλ€.
else λ¬Έ -> λ€μ νμ μμ μκ°(iter.first)μ΄ vv vectorμ λ΄κΈ΄ μμμ νμ λλλ μκ°(vv[i].second)λ³΄λ€ ν΄λλ§ λ€μ νμμ λλλ μκ°μ μ λ°μ΄νΈ ν΄μ€λ€. κ·Έκ² μλλΌλ©΄ continueλ‘ λκΈ°κ² λλ€.
vv ν¬κΈ°λ§νΌ λ€ λκ² λλ©΄ λ€μ if λ¬Έμ΄ μ€νλλ€.
μ΄ λΆλΆμ μ°μ₯λμ§ μμ νμλ₯Ό vvμ λμ μμΌ μλ‘μ΄ νμμ€ νμν κ²½μ° λ£λ κ³³μ΄λ€.
vv vectorμλ μ΅μ’ μ μΌλ‘ λμ λ νμλ§μ΄ μ μ₯λμ΄ μλ€. ex> 0 40 / 5 30
μμ 1931λ²μ λ¨Όμ νκ³ μ΄ λ¬Έμ λ₯Ό νκΈΈ μΆμ²νλ€ !!
C++ μ½λ :
//
// 19598_room_min.cpp
// SOMAπ©π»π»
//
// Created by JoSoJeong on 2021/02/10.
//
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int assign_room_min(int n, vector <pair<int, int>> v){
int cnt;
vector<pair<int, int> > vv;
sort(v.begin(), v.end()); // first μμ κΈ°μ€μΌλ‘ μ€λ¦μ°¨μμ μ λ ¬
vector<pair<int, int> >::iterator iter;
for(iter = v.begin(); iter != v.end(); ++iter){
int i = 0;
for(i = 0; i < vv.size(); i++) // κ²μ¬ν κ°―μ 0λ²μ§ΈλΆν° κ²μ¬ μμ
{
if((*iter).first >= vv[i].first && (*iter).first < vv[i].second){
continue;
}
else {
vv[i].second = (*iter).second;
break;
}
}
if(i == vv.size()){
vv.push_back(*iter);// μ²μ λ£λ κ³³
}
}
cnt = (int)vv.size();
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));
}
int count = assign_room_min(n, v);
cout << count << endl;
return 0;
}
'Algorithmπ° > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 2178 λ―Έλ‘ νμ bfs (0) | 2021.02.17 |
---|---|
[λ°±μ€] 1931 νμμ€ λ°°μ (0) | 2021.02.17 |
[λ°±μ€] 10818 μ΅μ, μ΅λ (0) | 2021.02.16 |
[λ°±μ€] 2110 곡μ κΈ° μ€μΉ (0) | 2021.02.16 |
[λ°±μ€] 2252 μ€μΈμ°κΈ° (0) | 2021.02.14 |
λκΈ