-
[백준] 1138 - 한 줄로 서기알고리즘 2023. 5. 10. 16:51728x90
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=' ')
'알고리즘' 카테고리의 다른 글
[백준] 1748 - 수 이어 쓰기1 (0) 2023.05.12 [백준] 13565 - 침투 (0) 2023.05.12 [백준] 1205 - 등수 구하기 (0) 2023.05.10 [백준] 3184 - 양 (1) 2023.05.10 [백준] 1325 - 효율적인 해킹 (1) 2023.05.08