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
반응형

+ Recent posts