2493번: 탑
첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1
www.acmicpc.net
A탑과 그의 수신탑B 사이에는 A보다 작은 탑이 없다는 것이 포인트이다.
이전 탑 arr[i-1]을 확인해서 크면 result에 넣어주고, 작다면 이전탑의 수신탑을 확인한다.
import sys
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
result = [0]*N
for i in range(1, N):
target = i-1
while target != -1:
if arr[target] >= arr[i]:
result[i] = target+1
break
else:
target = result[target]-1
print(*result)
'개발 > 알고리즘' 카테고리의 다른 글
[백준 2252] 줄 세우기 (python) (0) | 2021.05.03 |
---|---|
[백준 1717] 집합의 표현 (python) (0) | 2021.05.03 |
[프로그래머스] 경주로 건설 (python) (0) | 2021.05.01 |
[프로그래머스] 보석 쇼핑 (python) (0) | 2021.04.30 |
[백준 5557] 1학년 (python) (0) | 2021.04.29 |
최근댓글