[프로그래머스][Lv. 2] 뒤에 있는 큰 수 찾기

junhyeong04·2023년 9월 15일

codingTestPython

목록 보기
9/53

📁문제설명

정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.


📁제한사항

  • 4 ≤ numbers의 길이 ≤ 1,000,000
    • 1 ≤ numbers[i] ≤ 1,000,000

📁풀이

def solution(numbers):
	# numbers의 개수만큼 초기값 설정
    answer = [-1] * len(numbers)
    #빈 스택
    stack = []
    for i in range(len(numbers)):
        while stack and numbers[stack[-1]] < numbers[i]:
            answer[stack.pop()] = numbers[i]
        stack.append(i)
    return answer

처음에는 이중 for문으로 다가갔지만 시간복잡도가 O**2이다보니 시간초과가 떴다...
그러다보니 stack을 이용해서 풀어야 되는 문제다.텍스트

0개의 댓글