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