BOJ/Python

[BOJ/백준] 3711 - 학번 (Python)

tjdms4327 2025. 5. 9. 11:53

문제

문제링크

 각 테스트케이스에서 학번 g개가 주어진다.

학번들을 m으로 나눈 나머지가 모두 다른 가장 작은 정수 m을 출력하라.

 

풀이

각 테스트케이스에서 리스트에 g개의 학번을 입력받는다.

m을 1부터 시작하여 리스트 내의 각 학번을 나눈 나머지를 reminders 리스트에 저장한다.

이 리스트를 set으로 중복된 값을 삭제한 후 이 리스트의 길이와 학번 리스트의 길이를 비교해 

같다면 m을 출력하고 break한다.

다르다면 m을 증가시킨다. while문으로 감싸져 있으므로 다시 나머지 계산부터 반복된다.

 

코드

t=int(input())
for _ in range(t):
  g=int(input())
  student_ids=[int(input()) for _ in range(g)]
  m=1
  while True:
    reminders=[sn%m for sn in student_ids]
    if len(set(reminders))==len(student_ids): print(m); break
    m+=1