๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 11000๋ฒˆ - ๊ฐ•์˜์‹ค ๋ฐฐ์ •

by ์•ˆ์ฃผํ˜• 2022. 3. 18.

๋ฌธ์ œ

 

11000๋ฒˆ: ๊ฐ•์˜์‹ค ๋ฐฐ์ •

์ฒซ ๋ฒˆ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 200,000) ์ดํ›„ N๊ฐœ์˜ ์ค„์— Si, Ti๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ Si < Ti ≤ 109)

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <queue>
#include <algorithm>

using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    
    int n; cin>>n;
    vector<pair<int,int>>v;
    priority_queue<int,vector<int>,greater<int>>pq;
    
    for(int i=0; i<n; i++){
        int start, end; cin>>start>>end;
        v.push_back({start,end});
    }
    sort(v.begin(),v.end());
    
    pq.push(v[0].second);   //์ ค ์ฒซ์ˆ˜์—…์˜ ๋๋‚˜๋Š” ์‹œ๊ฐ„์„ ๋จผ์ € ์ถ”๊ฐ€
    
    for(int i=1; i<n; i++){
        if(v[i].first>=pq.top()){
            pq.pop();
            pq.push(v[i].second);
        }
        else pq.push(v[i].second);
    }
    cout<<pq.size();
}

 

ํ’€์ด

๋ฌธ์ œ ์ดํ•ด ์ž์ฒด๋Š” ๊ฐ„๋‹จํ•œ๋ฐ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ• ์ง€ ๊ณ„์† ๊ณ ๋ฏผ์ด ๋งŽ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

  1. ์ˆ˜์—… ์‹œ์ž‘ ์‹œ๊ฐ„์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋จผ์ € ์ •๋ ฌํ•œ๋‹ค.
  2. ๋‚ด๋ฆผ์ฐจ์ˆœ(์ตœ์†Œํž™)์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  3. ํ˜„์žฌ ์ˆ˜์—… ์‹œ์ž‘์‹œ๊ฐ„ >= ์šฐ์„ ์ˆœ์œ„ ํ์˜ top ๋„์ฐฉ์‹œ๊ฐ„์ด๋ฉด ๊ทธ ๊ฐ•์˜์‹ค์—์„œ ๊ณ„์† ๋“ค์„ ์ˆ˜ ์žˆ๋‹ค.
    1. ๋”ฐ๋ผ์„œ pq.pop() ์„ ํ•˜์—ฌ ๋„์ฐฉ์‹œ๊ฐ„์„ ๋นผ์ฃผ๊ณ 
    2. ํ˜„์žฌ ์ˆ˜์—…์˜ ๋„์ฐฉ์‹œ๊ฐ„์„ ๋‹ค์‹œ pq.push()ํ•œ๋‹ค.
  4. ํ˜„์žฌ ์ˆ˜์—…์‹œ๊ฐ„<์šฐ์„ ์ˆœ์œ„ ํ์˜ top ๋„์ฐฉ์‹œ๊ฐ„์ด๋ฉด ์ƒˆ๋กœ์šด ๊ฐ•์˜์‹ค์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.
    1. ๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ pop ์—†์ด ํ˜„์žฌ ์ˆ˜์—…์˜ ๋„์ฐฉ์‹œ๊ฐ„์„ pq.push ํ•ด์ค€๋‹ค.

์˜ˆ์ œ ์ž…์ถœ๋ ฅ์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

3
1 3
2 4
3 5

 

์ผ๋‹จ ์ ค ์ฒซ ์ˆ˜์—…์€ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ๋„์ฐฉ์‹œ๊ฐ„์„ pq์— ๋„ฃ๊ณ  ๊ทธ๋‹ค์Œ ์ˆ˜์—…๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

(2,4)๋ฅผ ๋ณผ ๊ฑด๋ฐ, ํ˜„์žฌ ์ˆ˜์—…์‹œ์ž‘ ์‹œ๊ฐ„ 2๊ฐ€ pq์˜ 3๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๊ฐ•์˜์‹ค์ด ํ•˜๋‚˜ ๋” ํ•„์š”ํ•˜๋‹ค๋Š” ์†Œ๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ pq์— ๋๋‚˜๋Š” ์‹œ๊ฐ„ 4๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

(3,5)๋ฅผ ๋ณผ๊ฑด๋ฐ, ์‹œ์ž‘ ์‹œ๊ฐ„ 3์ด pq ๋„์ฐฉ์‹œ๊ฐ„ 3๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฏ€๋กœ ๊ทธ ๊ฐ•์˜์‹ค์—์„œ ์—ฐ๋‹ฌ์•„์„œ ์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋๋‚˜๋Š” ์‹œ๊ฐ„์„ ๊ฐฑ์‹ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด pq.pop() ํ›„ pq.push() ํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ˆ˜์—…์„ ๋‹ค ๋Œ์•„๋ณด์•˜์„ ๋•Œ๋Š” ๋‚จ์€ pq์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ฐ•์˜์‹ค์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€