[개발]programmers/Python3

Lv.2_뒤에 있는 큰 수 찾기

dowon 2024. 10. 2. 11:25

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

 

프로그래머스

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

programmers.co.kr

def solution(numbers):
    
    answer = []
    for i in range(len(numbers)-1):
        exist = False
        for j in range(i+1, len(numbers)):
            if numbers[i] < numbers[j]:
                answer.append(numbers[j])
                exist = True
                break
                
        if not exist:
            answer.append(-1)
            
    answer.append(-1)
    
    return answer

초반 코드로 작성 시에는 시간초과가 발생한다.

 

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

stack으로 풀어야 시간 초과 없이 통과 가능하다.