[Programmers] Lv2. λ€μ μλ ν° μ μ°ΎκΈ° | C++
2023. 6. 4. 19:52γCoding Test/Programmers
πλ¬Έμ 보λ¬κ°κΈ°
π¨π»νμ΄ κ³Όμ
μ λ ₯ λ°μ΄ν°μ ν¬κΈ°κ° λ°±λ§ κ°λΌ \( O(N^2) \)μΌλ‘λ ν μ μμ΅λλ€. μ΄λ€ μλ£κ΅¬μ‘°λ₯Ό μΈκΉ κ³ λ―Όμ λ§μ΄ νμ΅λλ€.
λ¬Έμ μμ λ³Ό μ μλ νΉμ§λ€μ λ€μκ³Ό κ°μ΅λλ€.
- μ λ ₯ λ°μ΄ν°λ₯Ό μ°¨λ‘λλ‘ μν μμ
- νμ¬ μ«μκ° λ€μ μ«μλ³΄λ€ μλ€λ©΄, λ€μ μ«μλ λ· ν°μμ΄λ―λ‘ νμ¬ μ«μλ₯Ό ν΄λΉ λ· ν°μλ‘ κ΅μ²΄
- νμ¬ μ«μκ° λ€μ μ«μλ³΄λ€ ν¬λ€λ©΄, λ· ν°μκ° μμ μλ μμ μλ μλ μ«μμ΄λ―λ‘ λ°λ‘ κ΄λ¦¬
- λ°λ‘ κ΄λ¦¬λλ μ΄ μ«μλ€μ νλ λ· ν°μλ₯Ό λ§λ¬μ λ, ν΄λΉ λ· ν°μλ³΄λ€ μμ μ«μλ€μ λ°κΏμΌ ν¨
μ¬κΈ°μ μ€ν(Stack)μ μ¬μ©νλ©΄ μ’μ κ² κ°λ€λ μκ°μ νμμ΄μΌ νλλ°, μ κ° μμ§ λ¬Έμ λΆμ λ₯λ ₯μ΄ λ¨μ΄μ§λ λ΄ λλ€. μμ κ°μ νΉμ±λ€μ λ°νμΌλ‘, λ€μ μκ³ λ¦¬μ¦μ μ§μ ꡬννμμ΅λλ€.
- μ€νμ λ°μ΄ν°λ <μ«μ, μΈλ±μ€>λ‘ κ΅¬μ±λλ€.
- μ μΌ μ²μ λ°μ΄ν°μΈ (numbers[0], 0)λ₯Ό μ€νμ λ£κ³ , 1λ² μΈλ±μ€λΆν° λκΉμ§ μνλ₯Ό μμνλ€.
- νμ¬ μ«μκ° μ€νμ μ΅μμ μ«μλ³΄λ€ μκ±°λ κ°μ κ²½μ°, (νμ¬ μ«μ, μΈλ±μ€)λ₯Ό μ€νμ μ½μ
- κ·Έκ² μλλΌλ©΄ λ· ν°μλ₯Ό λ§λ κ²½μ°μ΄λ―λ‘, μ€νμμ ν΄λΉ λ· ν°μλ³΄λ€ μμ μ«μλ€μ λͺ¨μ‘°λ¦¬ λ· ν°μλ‘ λ³κ²½
- κ·Έ ν, λ· ν°μμΈ (νμ¬ μ«μ, μΈλ±μ€)λ₯Ό μ€νμ μ½μ
- μνλ₯Ό λ€ λκ³ μ€νμ λ¨μ μλ μ«μλ€μ λ· ν°μκ° μλ μ«μλ€μ΄λ―λ‘, ν΄λΉ μ«μμ μΈλ±μ€λ‘ μ°Ύμκ° -1λ‘ λ³κ²½
βοΈμμ€ μ½λ λ° κ²°κ³Ό
#include <string>
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> numbers) {
stack<pair<int, int>> _stack; // <μ«μ, μΈλ±μ€>
_stack.push(make_pair(numbers[0], 0));
for(int i = 1; i < numbers.size(); i++)
{
if (numbers[i] <= _stack.top().first) {
_stack.push(make_pair(numbers[i], i));
continue;
}
int pivot = numbers[i];
while(!_stack.empty() and _stack.top().first < pivot)
{
int index = _stack.top().second;
numbers[index] = pivot;
_stack.pop();
}
_stack.push(make_pair(pivot, i));
}
// λ· ν°μκ° μλ μ«μλ€ -1λ‘ λ³κ²½
while(!_stack.empty()) {
auto element = _stack.top();
numbers[element.second] = -1;
_stack.pop();
}
return numbers;
}
728x90
λ°μν
'Coding Test > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Programmers] Lv2. κ΄λ¬Ό μΊκΈ° | C++ (0) | 2023.06.06 |
---|---|
[Programmers] Lv2. λ§λ²μ μλ¦¬λ² μ΄ν° | C++ (0) | 2023.06.05 |
[Programmers] Lv2. λͺ¨μ μ¬μ | C++ (0) | 2023.06.04 |
[Programmers] Lv2. νΈν λμ€ (0) | 2023.06.03 |
[Programmers] Lv2. λ―Έλ‘ νμΆ | C++ (1) | 2023.06.03 |