-
Notifications
You must be signed in to change notification settings - Fork 0
/
boj_2493.py
51 lines (42 loc) · 1.1 KB
/
boj_2493.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# boj 2493 탑
import sys
input = sys.stdin.readline
n = int(input().strip())
towers = list(map(int, input().split()))
# towers.insert(0, 0)
# tower_stack = []
# result = []
# for i in range(1, n + 1):
# while len(tower_stack) > 0:
# if tower_stack[-1][1] > towers[i]:
# result.append(tower_stack[-1][0])
# break
# else:
# tower_stack.pop(-1)
# if len(tower_stack) == 0:
# result.append(0)
# tower_stack.append((i, towers[i]))
# print(*result)
answer = [0] * n
stack = []
for i in range(n):
while stack:
if stack[-1][1] < towers[i]:
stack.pop()
else:
answer[i] = stack[-1][0] + 1 # 정답에 index 넣기
break
stack.append((i, towers[i])) # 자기 자신 추가
print(*answer)
# !시간초과
# for i in range(n, 0, -1):
# for j in range(i, -1, -1):
# if j == 0:
# result.append(j)
# break
# if towers[j] > towers[i]:
# result.append(j)
# break
# print(*result[::-1])