PS

BOJ 1725 (스택)

plr3270 2021. 11. 14. 21:19

 

 

발상을 배웠다고 생각해야겠다

 

소스코드


n = int(input())
ls = []
for i in range(n):
    ls.append(int(input()))
ls.append(0)
maxS = 0
stack = []
for i in range(n+1):
    if len(stack) == 0 or ls[stack[-1]] < ls[i]:
        stack.append(i)
    else:
        while len(stack) != 0 and ls[stack[-1]] >= ls[i]:
            a = stack.pop()
            maxS = max(maxS, ls[a]*(i if len(stack) == 0 else i-stack[-1]-1))
            
        stack.append(i)

print(maxS)