BJO 1138 한 줄로 서기
N명은 매일 한 줄로 선다. 오민식의 지시대로 슨다. 오민식은 사람들이 줄 서는 위치 기록 기록과 사람들 실제 줄 선 위치가 맞는 지 확인. 사람들은 자기보다 큰 사람이 왼쪽에 몇명 있었는지 만을 기억 N명의 사람들이 있고. 사람들의 키는 1부터 N까지 모두 다르다. 각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 출력하는 프로그램 작성
N은 10보다 작거나 같은 자연수 둘 째 줄에는 키가 1인 사람부터 차례대로 자기보다 키 큰 사람이 왼쪽에 몇 명 있었는지 주어진다,
첫째 줄에 줄을 선 순서대로 키를 출력한다
단순히 떠오르는 생각
키가 1인 사람의 수는 우선 바로 알 수 잇다. 숫자는 차례대로 키가 1인 사람부터 차례대로 왼쪽에 몇 명 있었는지 주어진다. 2 1 1 0 키가 1인 사람, 즉 예제를 살펴보면 인덱스가 2인 곳에 위치한다. 가장 작은 수이기 때문에, 왼쪽에 있는 수들은모두 자신보다 큰 수다.
참고한 블로그를 살펴보니 이해가 갔다.
- 키큰 사람 순으로 처리해보자.
- 현재 리스트에 나보다 큰 사람만 있고, 나의 왼쪽에 나보다 큰 사람이 i명 있으면, 나는 i번째에 들어가면 된다.
코드
N = int(input())
H = list(map(int, input().split()))
arr = []
for i in range(N-1, -1, -1): # 큰 수부터 리스트에 넣는다.
arr.insert(H[i], i+1) # 큰 수의 위치는
for elem in arr:
print(elem, end=" ")
느낀점
알고보면 정말 간단한 문제일 줄 알았지만, 정말 간단한 문제다. insert를 활용할 생각을 했다면 조금 더 쉬웠을 것 같다.
참고자료 [참고블로그]https://blog.encrypted.gg/452