[白俊#2493]塔
1.問題の説明
2.解説
O(n^2)の時間的複雑さで解き始めたところ,タイムアウトが発生し,時間的複雑さをどのように減らすかを考えた.
3.コード
import sys
input = sys.stdin.readline
N = int(input())
tower = list(map(int, input().split()))
stack = []
res = [0] * N
for idx, val in enumerate(tower):
if idx == 0:
stack.append([idx, val])
continue
else:
while stack:
if val < stack[-1][1]:
res[idx] = stack[-1][0] + 1
break
else:
stack.pop()
stack.append([idx, val])
print(" ".join(map(str, res)))
Reference
この問題について([白俊#2493]塔), 我々は、より多くの情報をここで見つけました https://velog.io/@tenykim1109/백준-2493-탑テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol