๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค - ํฐ ์ ๋ง๋ค๊ธฐ
ํ์ด ๊ณผ์
k ๊ฐ์ ์ซ์๋ฅผ ์ ๊ฑฐํ์ฌ ๋ง๋ค ์ ์๋ ์ ์ค์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค.
๋ง์ฝ ๋ธ๋ฃจํธ ํฌ์ค
๋ก ์ ๊ทผํด ๋ชจ๋ ์กฐํฉ์ ๋ง๋ค์ด ๋ณธ๋ค๋ฉด ์ต๋ ๋ฌธ์์ด์ ๊ธธ์ด ๋๋ฌธ์ ์๊ฐ๋ด์ ์ํ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋์ ์ ํฐ ์๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ์กฐ๊ฑด์ผ๋ก ๊ฐ ์ซ์๋ฅผ ํ์์ ์ธ ์ ํ
์ ๋ฐ๋ผ ์ ๊ฑฐํด์ค๋ค๋ฉด ์ ํ ์๊ฐ๋ด์ ์ํ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฅผ ์ํด์๋ ํ์์ ์ธ ์ ํ
์ ๋ฐ๋ผ ์ฐ๋ฆฌ๊ฐ ์ ๋ ์ํด๋ณด๋ ์ผ์ด ์์์ ์ฆ๋ช
ํด์ผํฉ๋๋ค.
์ด๋ค ์ซ์๊ฐ ๊ฐ์ฅ ํฐ ์๊ฐ ๋๊ธฐ ์ํด์๋ ๊ฐ์ฅ ๋์ ์๋ฆฌ์๋ถํฐ ํฐ ์๋ฅผ ๊ฐ์ ธ์ผํจ์ ์๋ช
ํฉ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ํฐ ์๋ฆฌ์ ๋ถํฐ ํ์์ ์ํํ๋ฉฐ (์ธ๋ฑ์ค๋ก ๋ฐ์ง๋ฉด 0 ๋ถํฐ) ๊ฐ์ฅ ํฐ ์๊ฐ ๋๊ธฐ ์ํ ๊ฐ ์ซ์๋ค์ ์ ๋น์ฑ์ ๋ฐ์ ธ๋๋ก ํฉ๋๋ค.
์ด๋ค ์๋ฅผ ์ ๊ฑฐํ๋ค๋ ์๋ฏธ๋ ์ ๊ฑฐ๋๋ ์ซ์ ๋ค์ ์๋ฆฌ์๊ฐ ํด๋น ์๋ฆฌ์๋ฅผ ๋์ฒดํ๋ค๋ ์๋ฏธ์
๋๋ค.
๋ฐ๋ผ์ ์ซ์๊ฐ ์ ๊ฑฐ๋ ํ ์ ์ฒด ์๋ฆฌ์๊ฐ ํ๋ ์ค์ด๋ ์ํฉ์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ ์งํ๊ธฐ ์ํด์๋ ์ ๊ฑฐ๋๋ ์ซ์ ๋ค์์ ์ค๋ ์๊ฐ ํด๋น ์๋ณด๋ค ์ปค์ผํฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์คํ
์ ํตํด ๊ฐ ์๋ฆฌ์๋ฅผ ์ ์ฅํ๋ฉด์ ํ์ฌ top
์ ์กด์ฌํ๋ ์๋ณด๋ค ํฐ ์๊ฐ ์
๋ ฅ์ผ๋ก ๋ค์ด์ฌ ๊ฒฝ์ฐ pop
์ฐ์ฐ์ ํตํด top
์๋ ํญ์ ๊ฐ์ฅ ํฐ ์๊ฐ ์ ์ง๋๋๋ก ํด์ค๋๋ค.
์ด๋ pop
๋๋ ํ์๊ฐ ๋ชฉํ ์ ๊ฑฐ ํ์์ ๋ฏธ์น์ง ๋ชปํ ๊ฒฝ์ฐ ํ์ฌ ์ซ์๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๊ตฌ์ฑ๋์ด์๊ธฐ ๋๋ฌธ์ ๋ท ์๋ฆฌ๋ถํฐ ๋ถ์กฑํ ๊ฐ์ ๋งํผ ์ ๊ฑฐํด์ฃผ๋ฉด ๋๋ ๊ฒ์
๋๋ค.
์ฝ๋
def solution(number, k):
stack = []
pop_count = 0
for num in number:
if not stack or stack[-1] >= num:
stack.append(num)
elif stack[-1] < num:
while pop_count < k and stack and stack[-1] < num:
stack.pop()
pop_count += 1
stack.append(num)
if pop_count < k:
for _ in range(k-pop_count):
stack.pop()
return ''.join(stack)
number = '1924'
k = 2
print(solution(number, k)) # 94
'๐ algorithm > programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค Level 3 - ๋คํธ์ํฌ (0) | 2021.03.01 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค Level 3 - ์ต๊ณ ์ ์งํฉ (0) | 2021.03.01 |
ํ๋ก๊ทธ๋๋จธ์ค Level 3 - ์ฌ ์ฐ๊ฒฐํ๊ธฐ (0) | 2021.03.01 |
ํ๋ก๊ทธ๋๋จธ์ค Level 4 - ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2021.03.01 |
ํ๋ก๊ทธ๋๋จธ์ค Level 3 - ์ ๊ตญ ์ฌ์ฌ (0) | 2021.03.01 |
๐ฌ ๋๊ธ