PS/백준
[백준 2493번 ] 탑 (파이썬/python)
BLUE_ERASER
2021. 6. 12. 12:48
728x90
https://www.acmicpc.net/problem/2493
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
스택 자료구조를 이용해서 풀 수 있는 문제이다.
스택을 사용해서 필요없는 값들(작은 송신탑의 값들)을 pop( ) 해주면
효율적으로 필요한 길이의 송신탑만 탐색할 수 있다.
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
|
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
st = []
answer = ""
for i in range(n):
while 1:
# 스택에 값이 없으면 0출력, st에 append
if not st:
answer += "0 "
st.append([arr[i], i + 1])
break
# 만약 st 맨 뒤의 값이 현재 arr[i] 값보다 작으면
if arr[i] > st[-1][0]:
st.pop()
continue
else:
answer += str(st[-1][1]) + " "
st.append([arr[i], i + 1])
break
print(answer)
|
cs |
728x90