[Programmers] Lv2. λνμ€ κ²μ | C++
2023. 7. 1. 18:16γCoding Test/Programmers
πλ¬Έμ 보λ¬κ°κΈ°
π¨π»νμ΄ κ³Όμ
μ²μμλ DPλ‘ λ¬΄μ κΆ μ€ν¬μ μ¬μ©νμ κ²½μ°μ μ νμ κ²½μ°μ λ°μ΄ν°λ€μ μ μ₯νμ¬ νμ΄λκ°λ €κ³ νλλ°, 무μ κΆ μ€ν¬ κ°μ(k)μ λ³μ¬λ€ μ(n)κ° κ°μ κ² μλλΌμ κ·Έλ κ² ν μκ° μλλΌκ΅¬μ. κ·Έλμ μ€ν(Stack)μ μ΄μ©ν΄μ ν° μ«μλ₯Ό 무μ κΆ μ€ν¬λ‘ μ€ν΅νλ νμμΌλ‘ μ½λλ₯Ό μμ±νμλλ°, μ΄κ² μμ μ΅μ μ΄λΌλ 보μ₯μ΄ μμμ΅λλ€.
λ°©λ²μ μ°μ μμ ν(Priority Queue, heap)μλ€μ. μ μ΄ μκ°μ λͺ» νμκΉμ. λ°©λ²μ κ°λ¨ν©λλ€.
- νμ¬ λ³μ¬ μ(n)κ° νμ¬ λΌμ΄λμ μ μ μ(enemy[i])λ³΄λ€ μκ³ , 무μ κΆ μ€ν¬ κ°μ(k)κ° 0κ°λΌλ©΄ 루ν μ’
λ£
- κ·Έκ² μλλΌλ©΄, enemy[i]λ₯Ό μ°μ μμ νμ λ£κ³ , n -= enemy[i]λ₯Ό ν΄μ€λλ€.
- λΌμ΄λλ +1 ν΄μ€λλ€.
- μ¬μ© κ°λ₯ν λ³μ¬ μ΄μμΌλ‘ μ¬μ© νλ€λ©΄(n < 0), μ°μ μμ νμμ νλμ© popνμ¬ nμ λν΄μ€λλ€.
- popμ ν λλ§λ€ kλ₯Ό 1κ°μ© μ€μ¬μ€λλ€.
- k > 0μ΄κ³ , n >= 0μ΄ λμλ€λ©΄ 루νλ₯Ό μ’ λ£
- k == 0μ΄κ³ , n < 0μ΄λΌλ©΄ νμ¬ λΌμ΄λλ λΉΌκ³ λ£¨ν μ’ λ£
- λͺ¨λ λΌμ΄λλ₯Ό ν΄λ¦¬μ΄νλ€λ©΄ enemy λ°°μ΄μ κΈΈμ΄λ₯Ό 리ν΄νκ³ , μλλΌλ©΄ μΉ΄μ΄νΈ ν λΌμ΄λ μ 리ν΄
βοΈμμ€ μ½λ λ° κ²°κ³Ό
#include <vector>
#include <queue>
using namespace std;
int solution(int n, int k, vector<int> enemy) {
int answer = 0;
priority_queue<int> enemies;
int i = 0;
for (; i < enemy.size(); i++) {
if (n < enemy[i] and k == 0)
break;
enemies.emplace(enemy[i]);
n -= enemy[i];
answer++;
while (!enemies.empty() and n < 0) {
if ((k == 0 and n < 0)) {
answer--;
break;
}
n += enemies.top();
enemies.pop();
k--;
}
}
return i == enemy.size() ? enemy.size() : answer;
}
728x90
λ°μν
'Coding Test > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Programmers] Lv2. λ μ μ¬μ΄μ μ μ μ | C++ (0) | 2023.07.03 |
---|---|
[Programmers] Lv2. μ°λ°μμ΄ μ μ λΆ | C++ (0) | 2023.07.01 |
[Programmers] Lv2. ν μ΄λΈ ν΄μ ν¨μ | C++ (0) | 2023.07.01 |
[Programmers] Lv2. λ¬Έμμ΄ μμΆ | C++ (0) | 2023.06.30 |
[Programmers] Lv2. νλ ¬ ν λ리 νμ νκΈ° | C++ (0) | 2023.06.28 |