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

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

쉬운 목차

문제 설명

더보기

문제 설명

정수 배열 숫자가 있습니다.

배열의 각 요소에 대해 자신보다 다음으로 큰 숫자와 그 다음 숫자 중 가장 가까운 숫자를 다음으로 큰 숫자라고 합니다.


정수 배열 숫자가 인수로 주어지면 솔루션 함수를 완료하여 각 요소의 마지막 큰 숫자를 순서대로 포함하는 배열을 반환합니다.

그러나 마지막 큰 숫자에 없는 요소는 -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