[λ°±μ€(BOJ)] νμμ€λ°°μ (1931) C++
λ¬Έμ : BOJ_1931λ² νμμ€λ°°μ
λ¬Έμ μ€λͺ
그리λ μκ³ λ¦¬μ¦
μ λͺ
ν 그리λ λ¬Έμ μ
λλ€.
νμμ€μ΄ νλ μκ³ N κ°μ νμκ° μλλ°,
νμλ§λ€ μμ μκ°κ³Ό λλλ μκ°μ΄ μ ν΄μ Έμκ³
νμ μκ°μ κ²ΉμΉ μ μμ§λ§ νμμ λ μκ°κ³Ό λ€μ νμμ μμ μκ°μ΄ κ²ΉμΉ μ μμ΅λλ€.
λ ν, μμ μκ°κ³Ό λ μκ°μ΄ λμΌν κ²½μ°λ μμ΅λλ€.
μ΄λ κ°λ₯ν νμμ μ΅λ κ°μλ₯Ό ꡬνλ λ¬Έμ μ
λλ€.
Solution
λλλ μκ°μ΄ λΉ λ₯Έ νμλ₯Ό μ ννλ©΄, λ€μ μ νν μ μλ νμμ μκ° λμ΄λλ―λ‘,
λλλ μκ°λλ‘ μ λ ¬νμ¬ κ·Έλ¦¬λνκ² νμλ₯Ό μ ννλ κ²μ΄ λ¬Έμ μ ν΅μ¬μ
λλ€.
λ μκ° μμΌλ‘ μ λ ¬μ νκ³ , μ΄μ νμμ λ μκ°λ³΄λ€ μμ μκ°μ΄ λ¦λλ€λ©΄ μ΅λ κ°μμ μΆκ°ν΄ μ€λλ€.
λ€λ§, μμ μκ°κ³Ό λλλ μκ°μ΄ λμΌν νμλ μ΄μ νμκ° μ΄λ»λ κ°μ μν₯μ΄ μκΈ° λλ¬Έμ, 무쑰건 μΆκ°ν΄ μ€λλ€.
Description
- μκ° μμΌλ‘ μ λ ¬μ νκΈ° μν΄ μ°μ μμνλ₯Ό μΌμ΅λλ€.
- μλ£νμ΄ pair μΌ λ, μ°μ μμνλ μμ μ«μκ° κΈ°μ€μ΄λ―λ‘ {λ μκ°, μμ μκ°} μΌλ‘ push νμ΅λλ€.
- μ€κ°μ μμ μκ°κ³Ό λ μκ°μ΄ κ°μΌλ©΄ κ°μλ₯Ό +1 ν΄μ£Όκ³ λ€μ νλ₯Ό pop νμ΅λλ€.
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int N, result, beforeStartTime, beforeEndTime;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;
// μ€λ¦μ°¨μμΈ μ°μ μμνκ° νμνλ―λ‘ greater<> μΆκ°
int main(void) {
cin >> N;
for (int i = 0; i < N; i++) {
int startTime, endTime;
cin >> startTime >> endTime;
pq.push({ endTime,startTime });
// pairμ 첫 λ²μ§Έ μΈμκ° κΈ°μ€ -> λ μκ°, μμ μκ° μμΌλ‘ push
}
while (!pq.empty()) {
int nowEndTime = pq.top().first;
int nowStartTime = pq.top().second;
pq.pop();
if (beforeEndTime > nowStartTime) continue;
// μ νμμ λ μκ°μ΄ μ§κΈ νμμ μμ μκ°λ³΄λ€ λ¦μΌλ©΄ λμ΄κ°λ€.
if (nowEndTime == nowStartTime) {
// μμ μκ°κ³Ό λ μκ°μ΄ κ°μΌλ©΄ 무쑰건 μΆκ°ν΄μ€λ€.
result++;
beforeStartTime = nowStartTime;
beforeEndTime = nowEndTime;
continue;
}
result++;
beforeStartTime = nowStartTime;
beforeEndTime = nowEndTime;
}
cout << result << '\n';
}
'Algorithm > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] νμ€ν κ·Έλ¨(1725) (0) | 2022.03.07 |
---|---|
[BOJ] κ³±μ (1629) (0) | 2022.03.06 |
[BOJ] μ«μ μΌκ΅¬(2503) (0) | 2022.03.06 |
[BOJ] λ―ΈμΈλ¨Όμ§ μλ !(17144) (0) | 2022.03.06 |
[BOJ] μ°μ°μ λΌμλ£κΈ°(14888) (0) | 2022.03.06 |