(프로그래머) 뒤에서 큰 숫자 찾기 / Python, Python / 154539

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

프로그램 제작자

코드 중심 개발자를 고용하십시오. 스택 기반 위치 일치. 프로그래머를 위한 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

프로그래머.co.kr

문제 설명

더보기

문제 설명

정수 배열 숫자가 있습니다. 배열의 각 요소에 대해 자신보다 다음으로 큰 숫자와 그 다음 숫자 중 가장 가까운 숫자를 다음으로 큰 숫자라고 합니다.
정수 배열 숫자가 인수로 주어지면 솔루션 함수를 완료하여 각 요소의 마지막 큰 숫자를 순서대로 포함하는 배열을 반환합니다. 그러나 마지막 큰 숫자에 없는 요소는 -1을 포함합니다.


한계

  • 4≤ 숫자 길이 ≤ 1,000,000
    • 1≤ 숫자 (i) ≤ 1,000,000

I/O 인스턴스 번호 결과

(2, 3, 3, 5) (3, 5, 5, -1)
(9, 1, 5, 3, 6, 2) (-1, 5, 6, 6, -1, -1)

I/O 예시 설명

입력/출력 예제 #1
2 다음의 큰 숫자는 3입니다. 처음 3 다음의 가장 큰 숫자는 5입니다. 두 번째 3도 마찬가지입니다. 5는 다음 큰 수가 없기 때문에 -1입니다. 위의 숫자를 배열에 순서대로 넣으면 (3, 5, 5, -1)이 됩니다.

I/O 예제 #2
9는 뒤에 오는 큰 수가 없기 때문에 -1입니다. 1 다음의 숫자는 5이고 5와 3 다음의 숫자는 6입니다. 6과 2는 다음으로 큰 숫자가 아니므로 -1입니다. 위의 숫자를 배열로 배열하면 (-1, 5, 6, 6, -1, -1)이 됩니다.

문제를 풀다

def solution(numbers):
    stack = ()
    answer = (0) * len(numbers)
    
    for i in range(len(numbers)):
        while stack and numbers(stack(-1)) < numbers(i):
            answer(stack.pop()) = numbers(i)
        stack.append(i)
    while stack:
        answer(stack.pop()) = -1
    
    return answer