๊ฐ์ธ์ ์ผ๋ก ์ข ์ด๋ ค์ ๋ ๋ฌธ์ . ๋ก์ง์ ์ง๋ ์ฌ๊ณ ๊ณผ์ ์ ๋ ๋ช ํํ๊ฒ ํ ํ์๊ฐ ์๋ ๊ฑฐ ๊ฐ๋ค.
์์ด๋์ด
๊ธฐ๋ณธ์ ์ผ๋ก ํฐ ์๋ฅผ ๋ง๋ค๋ ค๋ฉด ์์๋ฆฌ๊ฐ ์ปค์ผ ํ๋ค (8xxx < 9xxx)
๊ทธ๋ผ ์์๋ฆฌ๋ถํฐ ํฐ ์๋ฅผ ๋๋ ค๊ณ ์๊ฐํ ๊ฒ์ด๋ค. ์์๋ฆฌ์ ํฐ ์๋ฅผ ์ด๋ป๊ฒ ์ฑ์ธ ์ ์์๊น?
๋ฌธ์ ์์ ์ซ์ ํ ๊ฐ๋ฅผ ์ฃผ๊ณ K๊ฐ์ ์๋ฅผ ์ ๊ฑฐํด์ ์ต๋๋ก ๋ง๋ค๋ผ๊ณ ํ๋ค.
ํ์ ๋ฐฉํฅ์? ์์์๋ถํฐ ์์๋๋ก ํ์ํ๋ค. ๋ ์๋ฅผ ๋น๊ตํด ๊ฐ๋ฉฐ ์๋ฅผ ๋ฒ๋ฆด์ง ๋ง์ง ๊ฒฐ์ ํ๋ฉด ๋๋ค.
์์ ์ ์๋ 4177252841์ ๊ฐ์ง๊ณ ์ค๋ช ํ๋ฉด, ๋จผ์ 4๋ฅผ ๋ฆฌ์คํธ์ ๋ด์์ค๋ค. [4] , k = 4
4 ๋ค์์ 1์ด๋๊น 4๋ณด๋ค ์๋ค. ๋ฐ๋ผ์ 1๋ ๋ฃ์ด์ค๋ค. [4, 1], k = 4
๊ทธ๋ค์ 7์ด ๋์๋ค. 7์ ์์ 1๋ณด๋ค ํฌ๋ค. ๊ทธ๋ผ ์์ ๋ฃ์๋ ์๋ฅผ ๋นผ๊ณ ๋ฃ์ด์ผ ํ๋ค. 1์ ๋นผ์ฃผ์.
์ซ์๋ฅผ ํ ๊ฐ ์ ์ธํ์ผ๋ฏ๋ก k๊ฐ๋ ๊ฐ์์์ผ ์ค๋ค. [4], k = 3
์ด์ 4์ ๋น๊ต๋ฅผ ํด๋ณด์. ์ฌ์ ํ 7์ด ํฌ๋ค. 4๋ ๋นผ์ฃผ์. [], k = 2
์ด์ 7์ ๋ฃ์ด์ฃผ์. [7] k = 2
๊ทธ๋ค์ ์ซ์๋ ๋ 7์ด๋ค. ์ซ์๊ฐ ๊ฐ์ผ๋๊น ๋ฃ์ด์ค๋ค. [7, 7] k = 2
์ด ๋ฐฉ์๋๋ก ์ญ ์งํํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์งํ๋๋ค.
1. [], k = 4
2. [4], k = 4
3. [4, 1], k = 4
4. [4], k = 3
5. [], k = 2
6. [7], k = 2
7. [7, 7], k = 2
8. [7, 7, 2], k = 2
9. [7, 7], k = 1
10. [7, 7, 5], k = 1
11. [7, 7, 5, 2], k = 1
12. [7, 7, 5], k = 0
13. [7, 7, 5, 8], k = 0
k๊ฐ์ด 0์ด๋ฉด ๋ ์ด์ ์ซ์๋ฅผ ์ ์ธํ ์ ์๋ค. ๋ค์ ๋จ์ ๊ฑด ๋ถ์ฌ์ฃผ์.
[7, 7, 5, 8] + [4, 1] = [7, 7, 5, 8, 4, 1]
๊ทธ๋ฆฌ๊ณ ์ด ์ผ์ด์ค์์๋ ์์ง๋ง, ์ด๋ ๊ฒ ๋ง๋ ๋ฆฌ์คํธ๊ฐ ๋ฌธ์ ์์ ์๊ตฌํ ์ ๋ต์ ๊ธธ์ด๋ณด๋ค ๊ธด ๊ฒฝ์ฐ๋ ๊ณ ๋ คํด์ผ ํ๋ค.
๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ์ผ๋ก ์ ๋ตํฌ๊ธฐ์ ๋ง๊ฒ ์๋ผ์ฃผ์.
์ ์ฒด ์ฝ๋
def solution(number, k):
answer = ''
num_list = [int(x) for x in list(number)] # ์ซ์๋ฅผ ํ๊ฐ์ฉ ๋๋ ๋ฆฌ์คํธ๋ก ์ ์ฅ
box = [] # ์ซ์๋ฅผ ๋ด์ ๋ฆฌ์คํธ
num_length = len(number) - k # ๋ฌธ์ ์์ ์๊ตฌํ๋ ๋ฆฌ์คํธ ํฌ๊ธฐ
for i in range(len(number)):
while k > 0 and box and box[-1] < num_list[i]: # k > 0, ๋ฆฌ์คํธ ์ ๋น์ด์๊ณ , ์๋ก์ด ๊ฐ์ด ํฌ๋ฉด pop์งํ
box.pop()
k -= 1
if k == 0:
box += num_list[i:] # ๋ค์ ๋จ์ ์ซ์๋ค ๋ถ์ฌ์ค
break # k๊ฐ 0์ด๋ฉด ๋์ด์ ์ด ๊ณผ์ ์ ์งํํ ์ ์์ผ๋๊น break
box.append(num_list[i]) # ์ซ์ ์ถ๊ฐ
if len(box) > num_length: #์ซ์๋ฅผ ๋ด์ ๋ฆฌ์คํธ๊ฐ ์ ๋ต๊ธธ์ด๋ณด๋ค ๊ธธ๋ฉด ์ฌ๋ผ์ด์ฑ
box = box[:num_length]
answer = ''.join(map(str,box)) #๋ฆฌ์คํธ๋ค joinํจ์๋ก ํฉ์ณ์ค
return answer