[programmers/py] 뒤에 있는 큰 수 찾기

승민·2024년 2월 18일

알고리즘

목록 보기
58/171

뒤에 있는 큰 수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/154539

문제 설명

정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.

단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.

풀이

def solution(numbers):
    answer = [-1 for _ in range(len(numbers))]
    # stack
    numbers.reverse()
    stack = [] # 사용하지 않은 값

    for i in range(len(numbers)):
        now = numbers[i]
        
        # stack이 있는데 만약 값이 현재 값보다 크지 않다면 빼준다.
        while len(stack) and stack[-1] <= now :
            stack.pop()
        # 위에서 현재보다 작은 값들을 제거함, 남은 값은 큰갑들
        # stack의 마지막 값이 가장 가까운 큰 값
        if len(stack) : answer[i] = stack[-1]
        stack.append(now) # stack에 추가
    
    answer.reverse()
    return answer

0개의 댓글