ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

 

programmers.co.kr

 

๋ฌธ์ œ ํ’€์ด

 ์–ด๋–ค ์ˆซ์ž์—์„œ K๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” stack์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • stack์— ๊ฐ’์ด ์—†๋‹ค๋ฉด ์ˆ˜๋ฅผ append ํ•œ๋‹ค.
  • stack์— ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ํ˜„์žฌ์˜ ์ˆ˜์™€ top์„ ๋น„๊ตํ•˜์—ฌ ๊ฐ’์ด ๊ฐ’์ด ํฌ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ popํ•œ๋‹ค.
    • ๋ฌธ์ œ์— ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” K๊ฐ€ ์ฃผ์–ด์ง€๋ฏ€๋กœ, ์ด ์—ญ์‹œ ๊ฐ™์ด ํŒ๋‹จํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
  • ๋งŒ์•ฝ K๊ฐ€ 0์ด ๋œ๋‹ค๋ฉด ์ฆ‰์‹œ ์ค‘๋‹จํ•˜๊ณ , ๋‚จ์€ ์ˆ˜๋“ค์„ stack์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

์ฝ”๋“œ

def solution(number, k):
    stack = []

    for i, num in enumerate(number):
        while stack and stack[-1] < num and k > 0:
            stack.pop()
            k -= 1

        if k == 0:
            stack += number[i:]
            break

        stack.append(num)

    stack = stack[:-k] if k > 0 else stack
    return "".join(stack)

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€