728x90
https://www.acmicpc.net/problem/2493
스택 자료구조를 이용해서 풀 수 있는 문제이다.
스택을 사용해서 필요없는 값들(작은 송신탑의 값들)을 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
'PS > 백준' 카테고리의 다른 글
[백준 4673번 ] 셀프 넘버 (파이썬/python) (0) | 2021.06.14 |
---|---|
[백준 4344번 ] 평균은 넘겠지 (파이썬/python) (0) | 2021.06.14 |
[백준 11053번] 가장 긴 증가하는 부분 수열 파이썬/python (0) | 2021.06.10 |
[백준 17135번] 캐슬 디펜스 c++ (0) | 2021.05.18 |
[백준 17406번] 배열 돌리기 4 c++ (0) | 2021.05.16 |