chyam

[프로그래머스 Lv2,python]- 뒤에 있는 큰 수 찾기 본문

프로그래머스/LV2

[프로그래머스 Lv2,python]- 뒤에 있는 큰 수 찾기

chyam_eun 2025. 1. 23. 11:56

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

def solution(numbers):
    an = [-1]*len(numbers)
    for i in range(len(numbers)-1):
        for j in range(i+1,len(numbers)):
            if numbers[i]<numbers[j]:
                an[i]=numbers[j]
                break
    return an

처음에는 for문을 두개 사용하여 했는데 시간초과가 몇개 떠서 아래처럼 고쳤다.

def solution(numbers):
    an=[-1]*len(numbers) # -1로 초기화
    stack=[]
    for i in range(len(numbers)-1,-1,-1):
        while(stack and stack[-1]<=numbers[i]): # 스택이 비어있지 않고 numbers[i]가 더 크면
            stack.pop() # 꺼내기
        if stack: # 비어있지 않으면 
            an[i]=stack[-1] # 스택 마지막 값 넣기
        stack.append(numbers[i]) # 스택에 추가하기
    return an