2023. 6. 27. 16:35ใCoding Test/Programmers
๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐จ๐ปํ์ด ๊ณผ์
์ฒ์์๋ ๋๋ฌด ์ฌ์ด๋ฐ? ํ๋ฉด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ ๋ค์ ์ซ์ k๊ฐ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ํ์์ผ๋, ๋ฌธ์ ๋ฅผ ์ ๊ฐ ์๋ชป ์ดํดํ๋๋ผ๊ตฌ์. ๊ธฐ์กด์ ์ฃผ์ด์ง๋ number ์๋ค์ ๊ธฐ์กด ์์น๋ฅผ ์ง์ผ์ผ ํ์ต๋๋ค. ์์ 2๋ฒ์ "1231234"๋ฅผ ์์๋ก ๋ค๋ฉด,
// ์ ๊ฑฐํ ์ซ์์ '|'ํ์
|| |
"1231234" -> "3234"
๊ฒฐ๊ณผ๋ก ๋์จ "3234"๋ ๊ธฐ์กด๊ณผ ๊ฐ์ด ๋๊ฐ์ ์์๋ฅผ ์ ์งํ๊ณ ์๋ค๋ ๊ฒ๋๋ค. ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํ์ด์ผ ํ๋ค์.
๊ทธ๋์ ์ ๋ ์คํ(Stack)์ ์ด์ฉํด์ ์ ๊ฑฐํ๊ณ ๋จ์ ์ซ์๋ค๋ง ๋ด์๋๋ ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ์คํ์ ๋ค์์ ๋ฐ์ ๋ชป ๋นผ๋๊น ๋ฌธ์์ด ์์ฑ์ด ๊ฑฐ๊พธ๋ก ๋๋, ๋ฐํฌ(deque)๋ฅผ ๋์ ์ด์ฉํ์ต๋๋ค.
๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- deque๊ฐ ๋น์๊ฑฐ๋, ํ์ฌ ์ซ์๊ฐ deque์ ๋ง์ง๋ง ์ซ์(back)๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ, deque์ ์ฝ์ ํฉ๋๋ค.
- ๊ทธ๊ฒ ์๋๋ผ๋ฉด, ๋ค์ ์กฐ๊ฑด๋ค ์ค ํ๋๋ผ๋ ๋ง์กฑํ์ง ์์ ๋๊น์ง deque์ back์ popํด์ฃผ๊ณ , k๋ฅผ ๊ฐ์์ํต๋๋ค.
- deque๊ฐ ๋น์ด ์์ง ์์ ๊ฒฝ์ฐ
- deque์ ๋ง์ง๋ง ์ซ์(back)๊ฐ ํ์ฌ ์ซ์๋ณด๋ค ์์ ๊ฒฝ์ฐ
- k๊ฐ 0๋ณด๋ค ํด ๊ฒฝ์ฐ
- ์ pop ์ฐ์ฐ์ด ๋๋ ํ์๋ ํ์ฌ ์ซ์๋ฅผ deque์ ์ฝ์ ํฉ๋๋ค.
- ์์ ๋ฃจํ๊ฐ ๋ค ๋๋ ํ, k๊ฐ 0 ์ด์์ด๋ผ๋ฉด deque์ ๋ท ์ซ์๋ค์ k๊ฐ๋งํผ ์ ๊ฑฐํด์ค๋๋ค.
- k๊ฐ 0 ์ด์์ธ ์ฑ๋ก ๋ฃจํ๊ฐ ๋๋ฌ๋ค๋ ๊ฒ์ ์ซ์๊ฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ด ์์๋ค๋ ๋ง์ ๋๋ค.
- ๊ทธ๋ ๊ธฐ์, ๋ค์์๋ถํฐ ์ ๊ฑฐํด์ฃผ๋ฉด ๊ฐ์ฅ ํฐ ์ซ์๊ฐ ๋ฉ๋๋ค.
- ์์ ๋ชจ๋ ์ฐ์ฐ์ด ๋๋ฌ๋ค๋ฉด, deque์ ๋จ์ ์๋ ์ซ์๋ค์ ๋ฌธ์์ด๋ก ๋ฆฌํดํฉ๋๋ค.
โ๏ธ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <string>
#include <deque>
using namespace std;
string solution(string number, int k) {
deque<char> selectedNums;
int removeCount = k;
for (const auto& num : number)
{
if (selectedNums.empty() or num <= selectedNums.back()) {
selectedNums.emplace_back(num);
continue;
}
while (!selectedNums.empty() and (selectedNums.back() < num) and (removeCount > 0)) {
removeCount--;
selectedNums.pop_back();
}
selectedNums.emplace_back(num);
}
/*
- ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ number์ ๊ฒฝ์ฐ, removeCount๋ฅผ ๋ค ์๋ชจํ๊ธฐ ์ ์ for๋ฌธ์ด ๋๋จ
- ๋ฐ๋ผ์, ํด๋น removeCount๋งํผ ๋ท ์ซ์๋ฅผ ์ ๊ฑฐ
*/
for (int i = 0; i < removeCount; i++)
selectedNums.pop_back();
return string(selectedNums.begin(), selectedNums.end());
}
'Coding Test > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv2. ํ๋ ฌ ํ ๋๋ฆฌ ํ์ ํ๊ธฐ | C++ (0) | 2023.06.28 |
---|---|
[Programmers] Lv2. ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ | C++ (0) | 2023.06.27 |
[Programmers] Lv2. ํ๋ฐฐ์์ | C++ (0) | 2023.06.26 |
[Programmers] Lv2. ๊ฐ์ฅ ํฐ ์ | C++ (0) | 2023.06.26 |
[Programmers] Lv2. ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ | C++ (0) | 2023.06.25 |