알고리즘 문제풀이

탑[백준 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)))