뒤에 있는 큰 수 찾기

Polla·2023년 2월 5일
0

programmers

목록 보기
37/58
post-thumbnail

프로그래머스 lv2 뒤에 있는 큰 수 찾기 파이썬



💡 문제

정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 
차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요.
단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.


🥔🥔 해결 및 공부


해결은 했지만... runtime 문제도 있고 맘에 들지 않아
다른 분의 코드를 가져왔다.


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

    for i in range(len(numbers)):
            while stack and numbers[stack[-1]] < numbers[i]:
                answer[stack.pop()] = numbers[i]
            stack.append(i)
            
    return answer

앞으로는 stack을 이용해서 푸는 방법으로 접근을 많이 시도해봐야겠다..

간단한데도 이해가 가질 않아 하루동안은 들여다 본게
좀 속상할 정도...

로직은 보이는 대로 stack에 기본적으로 -1 을 넣어주고,
numbers[stack[-1]]
즉, 그 전 값이 다음 값보다 클 시,
그 값을 pop()을 통해 없애주고 numbers [i]에 할당해주는 식이다.

그리고 while문을 썼기 때문에 i를 가지고 그 전값만 확인 하는 것이 아닌, 아직 stack에 들어가있는 다른 값도 비교해서 넣어준다.

스택...공부 다시해야지...😪😪

왜 for문으로만 접근하려했는지... 아쉽다


profile
트러블 슈팅 Blog => https://polla.palms.blog/home

0개의 댓글