알고리즘 문제풀이
탑[백준 2493]
wiojfe
2024. 6. 24. 18:04
완전 탐색 등의 알고리즘으로 풀게되면 시간이 초과되기 때문에 스택을 파이썬으로 만들어서 풀면 된다.
https://www.acmicpc.net/problem/2493
def find_laser_receivers(N, heights) :
stack=[]
result=[0]*N
for i in range(N):
while stack and stack[-1][0]<=heights[i]:
stack.pop()
if stack :
result[i] = stack[-1][1] + 1
stack.append((heights[i], i ))
return result
# 입력
N = int(input())
heights = list(map(int, input().split()))
# 결과 계산
result = find_laser_receivers(N, heights)
# 결과 출력
print(' '.join(map(str, result)))