나의 개발일지

[프로그래머스] Lv.2 뒤에 있는 큰 수 찾기 [Python, 파이썬] 본문

프로그래머스

[프로그래머스] Lv.2 뒤에 있는 큰 수 찾기 [Python, 파이썬]

YoonJuHan 2023. 12. 15. 18:59
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/154539
  • 🔑 스택
    • 정답 리스트는 numbers의 길이만큼  -1로 초기화
    • 스택에는 (인덱스, 값) 형태로 넣는다.
    • 스택에 요소가 있고 현재 들어오는 수가 스택의 마지막 요소보다 크면 정답 리스트 업데이트하고 스택 마지막 요소 pop
      • answer[stack[-1][0]] = numbers[i]
      • while문으로 현재 들어오는 수보다 작은 값이 스택에 없을 때까지 반복함

 

def solution(numbers):
    answer = [-1] * len(numbers)

    stack = []
    
    for i in range(len(numbers)):
        while stack and stack[-1][1] < numbers[i]:
            answer[stack[-1][0]] = numbers[i]
            stack.pop()
            
        stack.append((i, numbers[i]))
            
    return answer
Comments