본문 바로가기

알고리즘/백준

[백준] 2493번 : 탑

728x90

2493번: 탑

해당문제는 스택자료구조를 활용하여 문제를 해결 할 수 있습니다.

배열을 순회하면서 아래의 내용을 반복 수행하면 됩니다.

  1. 자기자신보다 큰 탑을 출력한다. 4번으로 이동
  2. 만약자기자신보다 작은 탑이 발견되면 큰 탑이 나올때까지 pop한다
  3. 큰탑이 나오면 출력하고 없다면 0을 출력한다.
  4. 자기자신을 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