프로그래머스 / 뒤에 있는 큰수

맹민재·2023년 4월 11일
0

알고리즘

목록 보기
57/134
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

stack에서 인덱스를 저장하는 방식으로 해결할 수 있는 문제

stack에 값이 아닌 인덱스를 저장시키고 stack에 마지막 인덱스의 수 보다 큰 수가 들어오면 계속해서 pop해준다.

pop하면 인덱스 정보가 나오므로 answer 배열에서 해당 인덱스를 바꿔주는 방법으로 정답을 구할 수 있다.


백준에서 똑같은 문제가 있어 쉽게 풀 수 있었다.
-> https://www.acmicpc.net/problem/17298

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글