Beginner
2024-04-21번호표 교환
번호표 교환을 마친 각 학생들이 가진 번호표를 순서대로 출력하는 함수 구현하기
#99일지#99클럽#TIL#개발자스터디#코딩테스트#항해
직접 풀러가기문제 설명
교실에는 N명의 학생들이 한 줄로 서 있다. 각 학생들은 번호표를 하나씩 가지고 있다. i번째 학생의 번호표에 적힌 수는 Ai이다.
그리고 M개의 카드가 있다. 이 카드는 1부터 M까지의 값을 가진다. 각 카드는 반드시 1부터 사용하며, k (2 ≤ k ≤ M) 번 카드는 k-1번 카드를 쓴 다음에 쓴다.
게임의 규칙은 다음과 같다.
- 선생님이 1번 학생에게 i번 카드를 준다. (1 ≤ i ≤ M)
- 카드를 받은 j번 학생은 j+1번 학생에게 카드를 넘긴다.
- Aj % i의 값이 Aj+1%i 의 값보다 크면 두 학생의 번호표를 서로 교환한다.
- 마지막 학생이 카드를 받으면 그 카드는 버린다.
이 과정을 모두 마친 후의 각 학생들이 가진 번호표를 순서대로 출력하는 프로그램을 작성하시오.
제한 사항
- 첫 번째 줄에 학생의 수와 카드의 수를 나타내는 정수 N, M (1 ≤ N ≤ 100, 1 ≤ M ≤ 100) 이 공백으로 구분되어 입력된다.
- 두 번째 줄부터 N줄에 걸쳐서 각 학생이 가지는 번호표의 값 Ai (1 ≤ Ai ≤ 1000) 가 주어진다.
입력 | 출력 |
6 4 3 2 8 3 1 5 | 2 3 1 8 5 3 |
10 6 1 2 3 4 5 6 7 8 9 10 | 6 1 2 3 10 4 8 7 9 5 |
풀이
- 첫 번째 줄에는 학생의 수 N, 카드의 수 M을 공백으로 구분해 입력한다.
-
input()
으로 받은 입력은 문자열이므로 int형으로 변환한다. - 번호표를 저장할 리스트를 선언한다.
-
리스트에
input()
으로 입력 받은 번호표의 값을 저장한다. - 1부터 M번 카드까지 주어진 규칙을 반복한다.
-
규칙에 대한 반복이 끝난 결과를 반복문을 돌면서
print()
로 순서대로 출력한다.
Python
N, M = map(int, input().split(' '))
num_tickets = []
for i in range(N):
num_tickets.append(int(input()))
for i in range(1, M+1):
for index in range(1, len(num_tickets)):
if num_tickets[index-1] % i > num_tickets[index] % i:
num_tickets[index-1], num_tickets[index] = num_tickets[index], number_tickets[index-1]
for ticket in number_tickets:
print(ticket)