728x90
๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐จ๐ปํ์ด ๊ณผ์
๋ฌธ์ ์์ ์คํ(Stack) ์ฐ๋ผ๊ณ ๋๋๊ณ ์ ์ํด์ค์, ์คํ ์ผ์ต๋๋ค. ๋ค๋ง, order ๊ธธ์ด๊ฐ ๋ฐฑ๋ง ๊ฐ๋ผ ์๊ฐ ์ด๊ณผ๊ฐ ๋ ๊น ๊ฑฑ์ ํ๋๋ฐ ์ ๋๋๋ผ๊ตฌ์. ์๋ฌด๋๋ ์ค์ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ธฐ์ ๋ฐฑ๋ง ๊ฐ๋ฅผ ๋ค ๋ณด์ง ์์์ ๊ทธ๋ฐ๊ฐ ๋ด ๋๋ค.
์ ๋ ๋ค์ ์์๋ฅผ ํตํด ์ฝ๋๋ฅผ ์์ฑํ์์ต๋๋ค.
- ํ์ฌ ํ๋ฐฐ ์์ ๋ฒํธ == order[i]๋ผ๋ฉด, answer + 1์ ํด์ค๋๋ค.
- ํ์ฌ ํ๋ฐฐ ์์ ๋ฒํธ < order[i]๋ผ๋ฉด, order[i] - 1๊น์ง ์คํ์ ๋ฃ์ด์ฃผ๊ณ answer + 1์ ํด์ค๋๋ค. ๊ทธ ํ, ํ์ฌ ํ๋ฐฐ ์์ ๋ฒํธ = order[i] + 1๋ก ๊ฐฑ์ ์์ผ ์ค๋๋ค.
- ํ์ฌ ํ๋ฐฐ ์์ ๋ฒํธ > order[i]๋ผ๋ฉด, ์คํ์ top๊ณผ order[i]์ ๋น๊ตํฉ๋๋ค.
- ๊ฐ๋ค๋ฉด answer + 1์ ํด์ฃผ๊ณ , pop์ ํฉ๋๋ค.
- ์๋๋ผ๋ฉด ๋ ์ด์ ์ค์ ์ ์๋ ํ๋ฐฐ๊ฐ ์์ผ๋ฏ๋ก answer์ ๋ฆฌํดํฉ๋๋ค.
- ํ์ฌ ํ๋ฐฐ ์์ ๋ฒํธ๊ฐ ๋ง์ง๋ง ํ๋ฐฐ ์์ ๋ฒํธ(order.size())๋ฅผ ๋์ด๊ฐ๋ค๋ฉด, ์คํ์ ๋ชจ๋ ์์ธ ์ํ์ด๋ฏ๋ก answer์ ์คํ ํฌ๊ธฐ๋งํผ ๋ํ๊ณ ๋ฆฌํดํฉ๋๋ค.
โ๏ธ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <vector>
#include <stack>
using namespace std;
int solution(vector<int> order) {
int answer = 0;
int deliveryBox = 1;
stack<int> subContainer;
for (const auto requiredOrder : order) {
if (order.size() < deliveryBox) {
answer += subContainer.size();
break;
}
if (deliveryBox == requiredOrder) {
deliveryBox++;
answer++;
continue;
}
if (deliveryBox < requiredOrder) {
while (deliveryBox < requiredOrder) subContainer.emplace(deliveryBox++);
answer++;
deliveryBox++;
continue;
}
if (deliveryBox > requiredOrder and !subContainer.empty()) {
if (subContainer.top() == requiredOrder) {
answer++;
subContainer.pop();
continue;
}
break;
}
}
return answer;
}
728x90
๋ฐ์ํ
'๐คAlgorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv2. ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ | C++ (0) | 2023.06.27 |
---|---|
[Programmers] Lv2. ํฐ ์ ๋ง๋ค๊ธฐ | C++ (0) | 2023.06.27 |
[Programmers] Lv2. ๊ฐ์ฅ ํฐ ์ | C++ (0) | 2023.06.26 |
[Programmers] Lv2. ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ | C++ (0) | 2023.06.25 |
[Programmers] Lv2. [1์ฐจ] ํ๋ ์ฆ4๋ธ๋ก | C++ (0) | 2023.06.24 |