[Python] 알고리즘/Silver

[1138] 한 줄로 서기 (Python)

-Becca- 2022. 3. 18. 22:02

[문제]

https://www.acmicpc.net/problem/1138

 

1138번: 한 줄로 서기

첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다

www.acmicpc.net


알고리즘 분류는 구현 입니다.

자신보다 큰 사람을 기억하고 있으므로, 만약 2명이라 기억한다면 자신의 왼쪽에는 2명의 큰 사람이 있었을 것입니다.

 

아래 영상은 알고리즘 이해를 돕기 위한 영상으로, 답을 알 수 있는 힌트가 들어있으니 나중에 보시는 것을 추천합니다.

알고리즘 이해를 돕기 위한 영상

[코드]

import sys

N = int(sys.stdin.readline())
height = list(map(int, sys.stdin.readline().split()))

dt = dict()
res = dict()
for i in range(N):
    dt[i] = height[i]
    res[i] = -1
    
for i in range(N):
    cnt = 0
    for j in range(N):
        if cnt == dt[i] and res[j] == -1:
            res[j] = i
            break
        if res[j] == -1 and cnt != dt[i]:
            cnt += 1

for i in range(N):
    print(res[i] + 1, end=" ")