[문제]
학생들이 한 줄로 줄을 선 후, 첫 번째 학생부터 차례로 번호를 뽑는다. 첫 번째로 줄을 선 학생은 무조건 0번 번호를 받아 제일 앞에 줄을 선다. 두 번째로 줄을 선 학생은 0번 또는 1번 둘 중 하나의 번호를 뽑는다. 0번을 뽑으면 그 자리에 그대로 있고, 1번을 뽑으면 바로 앞의 학생 앞으로 가서 줄을 선다. 세 번째로 줄을 선 학생은 0, 1 또는 2 중 하나의 번호를 뽑는다. 그리고 뽑은 번호만큼 앞자리로 가서 줄을 선다. 마지막에 줄을 선 학생까지 이와 같은 방식으로 뽑은 번호만큼 앞으로 가서 줄을 서게 된다. 각자 뽑은 번호는 자신이 처음에 선 순서보다는 작은 수이다.
줄을 선 학생들이 차례로 뽑은 번호가 주어질 때 학생들이 최종적으로 줄을 선 순서를 출력하는 프로그램을 작성하시오.
[문제 접근]
insert()함수를 사용하여 줄을 서게 한다.
[정답]
1. 학생의 수를 N에 입력받는다. 학생들이 뽑은 번호를 리스트 num에 입력받는다. 최종적으로 줄을 선 순서를 저장할 리스트 ans을 선언한다.
2. for문을 돌면서 insert()함수를 사용하여 해당 학생을 뽑은 번호를 기반하여 줄을 세운다.
ex) num=[0, 1, 1, 3, 2]
i=0) ans.insert(0,1) → ans=[1]
i=1) ans.insert(0,2) → ans=[2,1]
i=2) ans.insert(1,3) → ans=[2,3,1]
i=3) ans.insert(0,4) → ans=[4,2,3,1]
i=4) ans.insert(2,5) → ans=[4,2,5,3,1]
3. 최종적으로 줄을 선 순서 ans를 출력한다.
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #13163: 닉네임에 갓 붙이기 (0) | 2021.02.24 |
---|---|
[백준 파이썬] #2506: 점수계산 (0) | 2021.02.23 |
[백준 파이썬] #2511: 카드 놀이 (0) | 2021.02.22 |
[백준 파이썬] #10801: 카드 게임 (0) | 2021.02.22 |
[백준 파이썬] #10808: 알파벳 개수 (0) | 2021.02.20 |