algorithm'''problem solve
[프로그래머스] 큰 수 만들기
JunHwa Park
2020. 9. 16. 14:59
https://programmers.co.kr/learn/courses/30/lessons/42883
코딩테스트 연습 - 큰 수 만들기
programmers.co.kr
그리디 접근이다. 레벨2짜리 문제이지만 파이썬을 익히면서 하다 보니 문법 찾으면서 하느라고 조금 오래 걸렸다.
앞에서부터 스택에 넣으면서 비교한다. 만약 다음 원소가 더 크다면 사이즈가 허용하는 한 계속 빼고, 넣으면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
from collections import deque
def solution(number, k):
arr = [int(i) for i in number]
stack = deque()
strlen = len(number) - k
for i in range(len(number)):
if len(number) - (i + strlen) == 0:
stack.append(arr[i])
strlen -= 1
elif len(stack) == 0:
stack.append(arr[i])
strlen -= 1
else:
while len(stack) > 0 and len(number) - (i + strlen) != 0:
tmp = stack.pop()
if tmp >= arr[i]:
stack.append(tmp)
break
strlen += 1
if strlen > 0:
stack.append(arr[i])
strlen -= 1
answer = [str(i) for i in stack]
return ''.join(answer)
|
cs |