ํ์๋ฒ(๊ทธ๋ฆฌ๋) Lv2. ํฐ ์ ๋ง๋ค๊ธฐ
๋ฌธ์
์ด๋ค ์ซ์์์ k๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ซ์ 1924์์ ์ ๋ ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ 94 ์ ๋๋ค.
๋ฌธ์์ด ํ์์ผ๋ก ์ซ์ number์ ์ ๊ฑฐํ ์์ ๊ฐ์ k๊ฐ solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. number์์ k ๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ๋ง๋ค ์ ์๋ ์ ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ฌธ์์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์กฐ๊ฑด
- number๋ 2์๋ฆฌ ์ด์, 1,000,000์๋ฆฌ ์ดํ์ธ ์ซ์์ ๋๋ค.
- k๋ 1 ์ด์ number์ ์๋ฆฟ์ ๋ฏธ๋ง์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
number | k | return |
"1924" | 2 | "94" |
"1231234" | 3 | "3234" |
"4177252841" | 4 | "775841" |
ํ์ด
- stack ์ฌ์ฉ
- K > 0 ์ด๊ณ stack์ ๋ง์ง๋ง ์ซ์๊ฐ i ๋ณด๋ค ์์ผ๋ฉด ์คํ์์ pop ํด์ค๋ค
- ์คํ์ด ๋น๊ฑฐ๋ k๊ฐ 0 ์ดํ๊ฐ ๋๋ฉด while๋ฌธ์ ๋น ์ ธ๋์จ๋ค
- answer๋ ์คํ ๋ฐฐ์ด์ ์ซ์๋ค์ ''.join์ ์ฌ์ฉํด ๋ฌธ์์ด๋ก ๋ณํํด์ฃผ์ด ๋ฃ์ด์ค๋ค
def solution(number, k):
answer = ''
stack = []
for i in number:
if len(stack) == 0:
stack.append(i)
continue
if k > 0:
while stack[-1] < i:
stack.pop()
k -= 1
if not stack or k <= 0:
break
stack.append(i)
answer = ''.join(stack[:len(number) - k])
return answer