[백준 알고리즘] 1138번: 한 줄로 서기 (Python)
https://www.acmicpc.net/problem/1138
1138번: 한 줄로 서기
첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다
www.acmicpc.net
소스코드
풀이
★ 입력으로 키가 1인 사람부터 n인 사람까지 자신보다 앞에 있으면서, 키가 더 큰 사람의 수가 주어집니다 ! 그렇기에 키가 가장 큰 사람부터 자신 앞에 몇명이 존재하는지를 생각해보면 됩니다. 이때 insert() 함수를 사용하게 되는데, insert함수 insert(a,b)는 인덱스 번호 a자리에 b를 삽입시키는 기능을 가지고 있습니다.
★ 입력을 예시로 들었을 때,
2 1 1 0 이 들어오게 되고, 키가 n인 사람부터 자신 앞에 존재하는 더 키 큰 사람 수를 인덱스로 지정하여 insert 해주면
i가 4일 때, 키가 더 큰 사람은 0명이고, line이라는 배열의 0번째 자리에 insert 해줍니다. line = [4]
i가 3인 경우, 키가 더 큰 사람은 1명이고, 배열의 1번 자리에 insert 해줍니다. line = [4,3]
i가 2인 경우, 키가 더 큰 사람은 1명이고, 배열의 1번 자리에 insert 하는데, 기존에 인덱스 1을 가지고 있었던 값인 3은 insert로 인해 뒤로 밀리게 되고, 인덱스 번호 2를 가지게 됩니다. line = [4,2,3]
i가 1인 경우, 키가 더 큰 사람은 2명이고, 위와 같이 배열의 인덱스 번호 2번자리에 insert 해줍니다. line = [4,2,1,3]