[프로그래머스] 뒤에 있는 큰수 찾기 (파이썬)

dongEon·2023년 3월 30일
0

난이도 : LV2

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/154539

문제해결

  • n^2 은 시간 초과가 나므로 스택을 활용해 시간복잡도를 줄인다.
  • for문을 통해 numbers를 순회하면 스택에 각 숫자를 담고
  • 스택에 숫자가 들어있으면, 스택의 마지막인덱스 부터 현재 숫자와 비교해 현재 숫자가 더 크다면 answer의 스택의 마지막 인덱스에 현재 숫자를 기록.

소스코드

def solution(numbers):
    answer = [-1] * len(numbers)
    stack = []
    for i in range(len(numbers)):
        while stack and numbers[stack[-1]] < numbers[i]:
            answer[stack.pop()] = numbers[i]
        stack.append(i)

    return answer
        
            
profile
반갑습니다! 알고리즘 문제 풀이 정리 블로그 입니다. 피드백은 언제나 환영입니다!

0개의 댓글