https://school.programmers.co.kr/learn/courses/30/lessons/154539
def solution(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
이 문제는 검색해서 푼 문제이다.
앞으론 검색해서 푼 문제는 제목 맨 앞에 *를 표시해 다시 풀어야 하는 것으로 표시하겠다.
가장 먼저 한 실수는 스택이 단순히 앞에서부터 담고 -1번째와 i+1번째를 비교한다는 고정관념이다.
이 방법은 i번째부터 하나씩 stack에 담고, 스택에 담긴 것과 i.
즉 i와 i-1를 비교하는 문제이다.
'알고리즘' 카테고리의 다른 글
백준)숫자카드-python (0) | 2023.02.06 |
---|---|
*프로그래머스)카펫-python (0) | 2023.02.05 |
프로그래머스)두 큐 합 같게 만들기-pyhton (0) | 2023.02.02 |
프로그래머스)수식 최대화-pyhton (0) | 2023.02.01 |
프로그래머스) 메뉴 리뉴얼-python (0) | 2023.01.30 |