알고리즘

[백준] 1138 - 한 줄로 서기

j9972 2023. 5. 10. 16:51
728x90

1. 문제

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

 

1138번: 한 줄로 서기

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

www.acmicpc.net

 

2. 접근

1. 생각을 해보면 순서대로 주워져있기 때문에, order를 맨 뒤부터 생각해보면 된다

2. 1~n 이니까 n 보다 큰값은 없지? 그러니까 0일수밖에 없다

3. 그래서 n-1의 값이 0이면 [n-1, n], 1이면 [n, n-1],

4. n-2의 값이 0이면, [n-2,n-1, n] or [n-2,n, n-1], 1이면 [n-1,n-2, n] or [n,n-2, n-1], 2이면 [n-1,n, n-2] or [n,n-1, n-2]이다

-> 이렇게 값은 인덱스의 값이라고 생각하면 된다

5. 데이터를 받을 때마다 그 값 == 인덱스 값이라고 생각하고 insert 문을 실행해주면 되다

 

3. 풀이

# 1138 실버2
import sys
input = sys.stdin.readline

n = int(input())
order = list(map(int,input().split()))

res = []
#print(res)
for i in range(n-1,-1,-1):
    #order[i]의 값을 res의 인덱스값으로 생각해서 데이터 넣어주기
    res.insert(order[i], i+1)

for i in res:
    print(i,end=' ')