[개발]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으로 풀어야 시간 초과 없이 통과 가능하다.

'[개발]programmers > Python3' 카테고리의 다른 글

Lv.3_불량사용자  (0) 2024.07.11
Lv.3_스티커모으기(2)  (0) 2024.07.11
Lv.3_기지국 설치  (1) 2024.06.04
Lv.3_단속카메라  (0) 2024.06.03
Lv.3_등굣길  (0) 2024.05.30