728x90
해당문제는 스택자료구조를 활용하여 문제를 해결 할 수 있습니다.
배열을 순회하면서 아래의 내용을 반복 수행하면 됩니다.
- 자기자신보다 큰 탑을 출력한다. 4번으로 이동
- 만약자기자신보다 작은 탑이 발견되면 큰 탑이 나올때까지 pop한다
- 큰탑이 나오면 출력하고 없다면 0을 출력한다.
- 자기자신을 push 한다.
N = int(input())
table = list(map(int, input().split()))
result = []
stack = []
stack.append([table[0], 1])
result.append(0) # 첫번째 인덱스는 레이저를 수신할 탑이 없다.
for i in range(1, len(table)):
idx = stack[-1][1]
while stack and stack[-1][0] < table[i]:
stack.pop()
if stack:
result.append(stack[-1][1])
else:
result.append(0)
stack.append([table[i], i+1])
print(*result)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1062번 : 가르침 (1) | 2023.10.21 |
---|---|
[백준] 2096번 : 내려가기 (0) | 2023.10.21 |
[백준] 1005번 - ACM Craft (0) | 2023.10.21 |
[백준] 1018번 : 채스판 다시 칠하기 (0) | 2023.10.20 |
[백준] 1027번 : 고층건물 (0) | 2023.10.20 |