Stack 안에 (가격, 떨어지지 않은 시간) 을 리스트로 저장합니다.
-1 인덱스의 떨어지지 않는 시간은 0이기 때문에 stack의 초기값으로 저장합니다. => [[prices[-1], 0]]
-2 인덱스부터 시작해서 price를 하나씩 꺼냅니다. => for i in range(len(prices) -2, -1, -1 )
만약 stack에 있는 값의 가격이 현재 가격보다 크거나 작다면 stack에서 계속 pop합니다. => while stack and price <= stack[-1][0]
pop한 요소들의 popCount (떨어지지 않은 시간)을 더 해줍니다. => popCount += count
만약 나보다 크거나 같은 요소가 stack 안에 있다면
while 문이 나보다 작은 요소를 만나거나 stack 비어있을 때까지 실행될 것이고 1 < popCount가 됩니다.
그렇지 않다면 popCount은 기본 값 1로 유지됩니다.
해당 popCount를 answer[현재 인덱스] 에 저장하면 됩니다.
'Algorithm' 카테고리의 다른 글
[Python] 프로그래머스 - 연속된 부분 수열의 합 (0) | 2023.09.07 |
---|---|
[Python] 프로그래머스 - [3차] 압축 - O(n) 풀이 (0) | 2023.09.05 |
[프로그래머스] 기능개발 O(n) 시간복잡도 - 파이썬 (0) | 2023.08.21 |
[프로그래머스] JadenCase 문자열 만들기 (0) | 2023.07.29 |
[프로그래머스] 체육복 (1) | 2023.07.08 |