https://www.acmicpc.net/problem/2493
2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
현차 코테 문제 중에 있었던 유형 같다
- stack에 [탑의 높이, index]를 2차원 배열 형태로 저장
- 높이를 비교하면서 가장 높은 값이 stack에 남을 수 있도록 업데이트
- 가장 가까이 위치한 탑이 출력되야 하므로 for문 돌릴 때마다 일단 stack에 append해줘야 함
import sys
r = sys.stdin.readline
n = int(r())
t_list = list(map(int, r().split()))
answer = []
stk = []
for i in range(n):
h = t_list[i]
while stk:
if stk[-1][0] > h:
answer.append(stk[-1][1]+1)
break
else:
stk.pop()
if not stk:
answer.append(0)
stk.append([h, i])
print(*answer)
'◦ Algorithm > Python' 카테고리의 다른 글
프로그래머스 실패율 구현 (0) | 2023.04.29 |
---|---|
백준 옥상 정원 꾸미기 6198 스택 (1) | 2023.04.25 |
프로그래머스 의상 딕셔너리/해시/맵/카운터 (0) | 2023.04.22 |
백준 카드정렬하기 1715 그리디 (0) | 2023.04.22 |
백준 전자레인지 10162 그리디 (0) | 2023.04.22 |