상세 컨텐츠

본문 제목

[프로그래머스] 154539. 뒤에 있는 큰 수 찾기| 스택 | 파이썬, 소스코드, 정답

Coding Test/문제풀이

by yooputer 2023. 5. 11. 09:19

본문

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 요약

  • 정수로 이루어진 수열이 주어질 때, 자신보다 뒤에 있는 숫자중 자신보다 크고 가장 가까이 있는 숫자을 담은 배열을 구하라.
  • 만약 자신의 뒤에 자신보다 큰 숫자가 존재하지 않으면 -1을 담아라.

문제 조건

  • 4 <= len(numbers) <= 1,000,000
  • 1 <= len(numbers[i] <= 1,000,000

시행착오

처음에 스택문제인지 모르고 이중for문으로 풀었는데 오답판정을 받았다

다른 분들이 남기신 힌트를 보고 스택문제인지 알게 되었다.


접근방법


소스코드

def solution(numbers):
    answer = [-1]*len(numbers)
    stack = []

    for i, n in enumerate(numbers):
        while stack:
            if n > stack[-1][0]:
                answer[stack[-1][1]] = n
                stack.pop()
            else:
                stack.append((n, i))
                break
        else:
            stack.append((n, i))

    return answer

 

관련글 더보기