뒤에 있는 큰 수 찾기

최민수·2023년 2월 22일
0

알고리즘

목록 보기
5/94
⭐️
def solution(numbers):
    sz = len(numbers)
    answer = [-1 for i in range(sz)]
    temp = []
    
    for i in range(sz):
        while temp and numbers[temp[-1]] < numbers[i]:
            answer[temp.pop()] = numbers[i]
        temp.append(i)
    
    return answer
  • n 값이 10^6 이기 때문에 이중 for문(O(n^2))으로 풀면 시간 초과가 날 확률이 매우 높다.
  • O(n)으로 쭉 순회하면서 해결된 값은 stack(스택과 같은 역할을 하는 리스트) 에서 바로 제거, 해결 되지 않은 값은 stack에 남겨둔 채로 계속 진행.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글