본문 바로가기

알고리즘

*프로그래머스)뒤에 있는 큰 수 찾기-python

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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

 

이 문제는 검색해서 푼 문제이다.

앞으론 검색해서 푼 문제는 제목 맨 앞에 *를 표시해 다시 풀어야 하는 것으로 표시하겠다.

 

가장 먼저 한 실수는 스택이 단순히 앞에서부터 담고 -1번째와 i+1번째를 비교한다는 고정관념이다.

이 방법은 i번째부터 하나씩 stack에 담고, 스택에 담긴 것과 i.

즉 i와 i-1를 비교하는 문제이다.