해당 문제는 구현 카테고리에 속한 문제입니다
교실에는 N명의 학생들이 한 줄로 서 있었다. 각 학생들은 번호표를 하나씩 가지고 있다. i번째 학생의 번호표에 적힌 수는 A(i)이다.
그리고 M개의 카드가 있다. 이 카드는 1부터 M까지의 값을 가진다. 각 카드는 반드시 1부터 사용하며, k(2<=k<=M)번 카드는 k-1번 카드를 쓴 다음에 쓴다
규칙은 아래와 같다
1. 선생님이 1번 학생에게 i번 카드를 준다(1<=i<=M)
2. 카드를 받은 j번 학생은 j+1번 학생에게 카드를 넘긴다.
3. A(j)%i의 값이 A(j+1)%i보다 크면 두 학생의 번호표를 서로 교환.
4. 마지막 학생이 카드를 받으면 그 카드는 버린다.
이 과정을 모두 마친 후의 학생들이 가진 번호표를 순서대로 출력하는 프로그램을 작성
n,m = map(int,input().split(' '))
student_n = [] # 학생들이 받을 카드를 리스트 형태로 저장
for _ in range(n):
number = int(input())
student_n.append(number)
for i in range(1, m+1): # m은 반드시 1보다 커야하기 때문에
for j in range(n-1): # range의 값이 리스트의 인덱스를 벚어나지 않게 해야함
if (student_n[j] % i) > (student_n[j+1] % i):
student_n[j], student_n[j+1] = student_n[j+1], student_n[j]
else:
continue
for num in student_n:
print(num)