728x90
반응형
스택을 활용해서 풀어야 하는 문제이다. for 문을 두 번 써서 풀면 절대 통과할 수가 없다.
import sys
N = int(sys.stdin.readline())
li = [int(sys.stdin.readline()) for _ in range(N)]
stack, res = [], 0
for i in range(N):
while stack != [] and stack[-1] <= li[i]:
stack.pop()
stack.append(li[i])
res += len(stack)-1
print(res)
EX) li = [10, 3, 7, 4, 10, 2]
i = 0 -> stack = [10], res = 0
i = 1 -> stack = [10, 3], res = 1
i = 2 -> stack = [10, 7], res = 2
i = 3 -> stack = [10, 7, 4], res = 4
i = 4 -> stack = [12], res = 4
i = 5 -> stack = [12, 2], res = 5
답: 5
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 2164번 카드2(python) (0) | 2021.03.05 |
---|---|
백준 알고리즘 11866번 요세푸스 문제 0(python) (0) | 2021.03.05 |
백준 알고리즘 10866번 덱(python) (0) | 2021.03.05 |
백준 알고리즘 10845번 큐(python) (0) | 2021.03.05 |
백준 알고리즘 2812번 크게 만들기(python) (2) | 2021.03.05 |