๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/131704
์ฒซ๋ฒ์งธ ํ์ด
์ฒซ๋ฒ์งธ๋ ๊ทธ๋ฆฌ๋๋ก ํ์๋๋ฐ vector.erase()๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ฌ์ฉํด์ผ ํด์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋ค.
list๋ฅผ ์ฌ์ฉํ์ฌ erase ์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ธ๋ค๊ณ ํด๋, list๋ index๋ฅผ ์ด์ฉํ ๋๋ค ์ก์ธ์ค๊ฐ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ ์ํ๋ ์ธ๋ฑ์ค์ ์ ๊ทผํ๊ธฐ๊น์ง ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค.
๊ฒ๋ค๊ฐ ์๊ฐํ๊ธฐ๋ ํ๋ ํ์ด์ด๋ค.
ํ๋ฆฐ ํ์ด์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ๋ง ์ค๋ช ํ๋ฉด,
ํ์ฌ ๋ฐ์ค๊ฐ ์์์ ๋ง๋ ๋ฐ์ค๋ผ๋ฉด boxs์์ ์ญ์ ํ๋ค. ์๋๋ผ๋ฉด ๋ค์ ๋ฐ์ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๋ง์ฝ ์ด์ ๋ฐ์ค๊ฐ ๋ค์ ์์์ ๋ฐ์ค๋ผ๋ฉด ์ด์ ๋ฐ์ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<int> order) {
int answer = 0;
vector<int> boxs(order);
sort(boxs.begin(), boxs.end());
int box_idx = order[0]-1;
int order_idx = 0;
while (!boxs.empty())
{
if (box_idx == boxs.size())
break;
if (boxs[box_idx] == order[order_idx])
{
boxs.erase(boxs.begin() + box_idx);
++order_idx;
++answer;
}
else
++box_idx;
if (box_idx - 1 >= 0 && boxs[box_idx - 1] == order[order_idx])
{
--box_idx;
}
}
return answer;
}
๋๋ฒ์งธ ํ์ด
๋๋ฒ์งธ ํ์ด๋ ์คํ์ ์ด์ฉํ๋ค.
sub ์ปจ๋ฒ ์ด์ด๋ฅผ stack์ผ๋ก ์ค์ ํ๊ณ , ๋ฐ์ค๋ฅผ ํ๋์ฉ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ์ ๋ฃ๋๋ค.
๋ง์ฝ ๊ฐ์ฅ ์ต๊ทผ์ ๋ฃ์ ๋ฐ์ค๊ฐ ํ์ฌ ์์์ ๋ง๋ ๋ฐ์ค๋ผ๋ฉด ์ปจ๋ฒ ์ด์ด์์ ๊บผ๋ด๊ณ ๋ค์ ์์์ ๋ฐ์ค๋ฅผ ์ฐพ๋๋ค.
๋ง์ฝ ๊ฐ์ฅ ์ต๊ทผ์ ๋ฃ์ ๋ฐ์ค์ ์์์ ๋ง์ง ์๋ ๋ฐ์ค๋ผ๋ฉด ์ปจ๋ฒ ์ด์ด ๋ฐธํธ์ ๋ฐ์ค๋ฅผ ๋ฃ๊ณ ํ์ฌ ์์๋ฅผ ์ ์งํ๋ค.
#include <vector>
#include <stack>
using namespace std;
int solution(vector<int> order) {
int answer = 0;
stack<int> sub;
// ์ฒซ๋ฒ์งธ ๋ฐ์ค ๋ฃ๊ธฐ
int num = 1;
sub.push(num);
for (int i = 0; i < order.size(); ++i)
{
// sub ์ปจํ
์ด๋์ ๊ฐ์ฅ ๋์ค์ ๋ค์ด์จ ๋ฐ์ค๊ฐ ์์์ ๋ง๋ ๋ฐ์ค๋ผ๋ฉด
if (!sub.empty() && sub.top() == order[i])
{
// ์ปจํ
์ด๋์์ ๋ฐ์ค ๋นผ๊ธฐ
sub.pop();
// ์ ๋ต ๊ฐ์ ์ถ๊ฐ
++answer;
}
// ์์์ ๋ง๋ ๋ฐ์ค๊ฐ ์๋๋ผ๋ฉด
else
{
// ๋ฐ์ค์ ์ ์ด๊ณผ์ ๋ ์ด์ ์ปจํ
์ด๋์ ๋ฐ์ค ์ถ๊ฐ ์ํ๋ค
if (num >= order.size()) break;
// ์ปจํ
์ด๋์ ๋ฐ์ค ์ถ๊ฐ
++num;
sub.push(num);
// ๋ฐ์ค ์์ ์ ์ง
--i;
}
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ์๋ฌผ์ ์ ์ด์ (C++) (0) | 2023.06.21 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.1 - ํ์ค๋ ์(C++) (0) | 2023.06.20 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ํธํ ๋์ค(C++) (0) | 2023.06.18 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์์ด ๋๋ง์๊ธฐ(C++) (0) | 2023.06.18 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์์ ์ง๊ฟ(C++) (1) | 2023.06.12 |