Algorithm/1일 1코테
[🥲 프로그래머스] 큰 수 만들기 - 탐욕법
대인보우
2021. 7. 25. 20:22
반응형
https://programmers.co.kr/learn/courses/30/lessons/42883
✅ 다른 사람 풀이
def solution(number, k):
# number = 1924
stack = [number[0]] # 맨 처음 숫자 1
for num in number[1:]: # 9,2,4가 하나씩 출력
# stack에 있는 값과 현재 num을 비교하여 stack을 채운다!
# stack에 값이 있고 & stack의 맨 마지막 값이 현재 값보다 작고 & k가 0보다 크면
while len(stack) > 0 and stack[-1] < num and k > 0:
k -= 1
stack.pop()
stack.append(num)
# 잔여 처리
if k != 0:
stack = stack[:-k]
return ''.join(stack)
✅ 로직
현재 스택에 담긴 것과 num을 비교하여 stack을 변경해나가는 방식..!!!
예시) number=1924, k=2일 경우
stack (전) | 현재 num | stack (후) |
[1] # 맨 처음 것 | 9 # stack보다 num이 더 크므로 stack에 있는 것 삭제하고 num 추가, k는 -1하여 k=1 |
[9] |
[9] | 2 # stack보다 num이 더 작으므로 stack에 그냥 추가 |
[9,2] |
[9,2] | 4 # stack의 2보다 작으므로 stack에서 2 삭제 후 k는 -1하여 k=0 # k가 0이므로 while문 멈춤 |
[9,4] |
반응형