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

DaeHoon·2023년 1월 27일
0

프로그래머스

목록 보기
11/16

문제

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

접근

1) numbers를 뒤에서 부터 for문을 돌리는데, 이 때 스택에 numbers의 원소를 같이 삽입한다.
2) 첫 번째 원소는 무조건 -1, 아닐 경우에는 스택에서 값을 꺼내 현재 numbers의 원소와 값을 비교해서 큰 값이면 꺼낸 값을 answer에 넣고, 다시 스택에 넣는다.
3) while문이 다 돌 때까지 값을 못 찾으면 무조건 -1을 넣는다.
4) 역순으로 answer를 리턴한다

Code

def solution(numbers):
    answer = []
    st = []
    
    for idx,number in enumerate(numbers[::-1]):
        if idx == 0:
            answer.append(-1)
        else:
            while st:
                max_num = st.pop()

                if max_num > number:
                    answer.append(max_num)
                    st.append(max_num)
                    break
            else:
                answer.append(-1)        
        st.append(number)
        
    return answer[::-1]
profile
평범한 백엔드 개발자

0개의 댓글