https://school.programmers.co.kr/learn/courses/30/lessons/154539
프로그램 제작자
코드 중심 개발자를 고용하십시오. 스택 기반 위치 일치. 프로그래머를 위한 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
프로그래머.co.kr
문제 설명
더보기
한계
I/O 인스턴스 번호 결과
I/O 예시 설명
문제 설명
정수 배열 숫자가 있습니다.
배열의 각 요소에 대해 자신보다 다음으로 큰 숫자와 그 다음 숫자 중 가장 가까운 숫자를 다음으로 큰 숫자라고 합니다.
정수 배열 숫자가 인수로 주어지면 솔루션 함수를 완료하여 각 요소의 마지막 큰 숫자를 순서대로 포함하는 배열을 반환합니다.
그러나 마지막 큰 숫자에 없는 요소는 -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