๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จ‍๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

์ฒ˜์Œ์—๋Š” ๋„ˆ๋ฌด ์‰ฌ์šด๋ฐ? ํ•˜๋ฉด์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„ ๋’ค์˜ ์ˆซ์ž 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());
}

 

 

728x90
๋ฐ˜์‘ํ˜•