Algorithm/1일 1코테

[🥲 프로그래머스] 큰 수 만들기 - 탐욕법

대인보우 2021. 7. 25. 20:22
반응형

https://programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

 

✅ 다른 사람 풀이

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]

 

반응형