πŸ“¦ Changgo/[BOJ] 그리디 μ •λ³΅ν•˜κΈ°

[BOJ][C++] λ°±μ€€ 11000번: κ°•μ˜μ‹€ λ°°μ • (Gold V)

선달 2025. 4. 16. 01:28
λ°˜μ‘ν˜•

문제

μˆ˜κ°•μ‹ μ²­μ˜ λ§ˆμŠ€ν„° κΉ€μ’…ν˜œ μ„ μƒλ‹˜μ—κ²Œ μƒˆλ‘œμš΄ κ³Όμ œκ°€ μ£Όμ–΄μ‘Œλ‹€.
κΉ€μ’…ν˜œ μ„ μƒλ‹˜ν•œν…ŒλŠ” Si에 μ‹œμž‘ν•΄μ„œ Ti에 λλ‚˜λŠ” N개의 μˆ˜μ—…μ΄ μ£Όμ–΄μ§€λŠ”λ°, μ΅œμ†Œμ˜ κ°•μ˜μ‹€μ„ μ‚¬μš©ν•΄μ„œ λͺ¨λ“  μˆ˜μ—…μ„ κ°€λŠ₯ν•˜κ²Œ ν•΄μ•Ό ν•œλ‹€.
참고둜, μˆ˜μ—…μ΄ λλ‚œ 직후에 λ‹€μŒ μˆ˜μ—…μ„ μ‹œμž‘ν•  수 μžˆλ‹€. (즉, Ti≤ Sj일 경우 i μˆ˜μ—…κ³Ό j μˆ˜μ—…μ€ 같이 듀을 수 μžˆλ‹€.)
μˆ˜κ°•μ‹ μ²­ λŒ€μΆ©ν•œ 게 찔리면, μ„ μƒλ‹˜μ„ λ„μ™€λ“œλ¦¬μž!

μž…λ ₯

첫 번째 쀄에 N이 μ£Όμ–΄μ§„λ‹€. (1 ≤ N ≤ 200,000)
이후 N개의 쀄에 Si, Tiκ°€ μ£Όμ–΄μ§„λ‹€. (0 ≤ Si< Ti≤ 109)

좜λ ₯

κ°•μ˜μ‹€μ˜ 개수λ₯Ό 좜λ ₯ν•˜λΌ.

 

풀이

// 풀이 : https://whkakrkr.tistory.com

#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> ci;

int solution(int n, vector<ci>&v) {
    int ans;
    
    sort(v.begin(), v.end());
    
    priority_queue<int, vector<int>, greater<int>> pq;
    
    pq.push(v[0].second);
    
    for(int i=1; i<n; i++) {
        ci cur = v[i];
        int s = cur.first;
        int t = cur.second;
        
        if(pq.top() <= s) {
            pq.pop();
        }
        pq.push(t);
    }
    
    ans = pq.size();
    return ans;
}

int main() {
    ios_base::sync_with_stdio(false);
	cout.tie(NULL);
	cin.tie(NULL);
	
	int n, a,b;
	cin >> n;
	vector<ci>v(n);
	for(int i=0; i<n; i++) {
	    cin >> a >> b;
	    v[i] = {a,b};
	}
	
	int ans = solution(n, v);
	cout << ans;
	
    return 0;
}
λ°˜μ‘ν˜•