번호표 교환
면접 대비시간 제한2초메모리 제한512 MB
1번부터 M번까지 카드 순서대로 각 나머지를 기준으로 이웃 번호표를 교환한 뒤 최종 줄을 출력합니다.
문제
교실에 학생 명이 한 줄로 서 있다. 앞에서부터 번째 학생은 번호표를 한 장 가지고 있고, 거기에 적힌 수는 이다.
카드는 1번부터 번까지 장 있다. 카드는 반드시 1번부터 차례로 쓰며, 번 카드()는 번 카드를 쓴 다음에 쓴다.
번 카드를 쓰는 방법은 다음과 같다.
- 선생님이 1번 학생에게 번 카드를 준다.
- 카드를 받은 번 학생은 번 학생에게 카드를 넘긴다. 이때 가 보다 크면 두 학생이 번호표를 서로 교환한다. 여기서 는 그 시점에 번 학생이 들고 있는 번호표의 수이다.
- 마지막 학생이 카드를 받으면 그 카드는 버린다.
번 카드까지 버리면 게임이 끝난다. 게임이 끝난 뒤 학생들이 가진 번호표를 앞에서부터 차례로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 학생 수 과 카드 수 이 공백으로 구분되어 주어진다. (, )
둘째 줄부터 개 줄에 걸쳐 각 학생이 처음에 가진 번호표의 수 가 한 줄에 하나씩 주어진다. ()
출력
게임이 끝난 뒤 각 학생이 가진 번호표의 수를 앞에서부터 한 줄에 하나씩 출력한다.
힌트
학생 6명이 번호표 3, 2, 8, 3, 1, 5를 순서대로 가지고 있고 카드가 4장이라고 하자. 카드를 한 장씩 쓸 때마다 줄은 이렇게 바뀐다.
- 1번 카드를 쓴 뒤: 3 2 8 3 1 5
- 2번 카드를 쓴 뒤: 2 8 3 3 1 5
- 3번 카드를 쓴 뒤: 2 3 3 1 8 5
- 4번 카드를 쓴 뒤: 2 3 1 8 5 3