Skip to content

Commit ff947fb

Browse files
committed
[Silver V] Title: 학번, Time: 520 ms, Memory: 195956 KB -BaekjoonHub
1 parent a789f3e commit ff947fb

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# [Silver V] 학번 - 3711
2+
3+
[문제 링크](https://www.acmicpc.net/problem/3711)
4+
5+
### 성능 요약
6+
7+
메모리: 195956 KB, 시간: 520 ms
8+
9+
### 분류
10+
11+
수학, 브루트포스 알고리즘, 정수론, 집합과 맵
12+
13+
### 제출 일자
14+
15+
2025년 9월 23일 15:07:27
16+
17+
### 문제 설명
18+
19+
<p>Z 대학교 학생은 입학할 때 학번을 받게 된다. 학번은 0보다 크거나 같고, 10<sup>6</sup>-1보다 작거나 같은 정수이다. Z 대학의 김상근 교수는 학번으로 학생들을 구분한다. 상근이는 학생들을 조금 더 쉽게 기억하기 위해서 자신이 가르치는 학생들의 학번을 m으로 나누었을 때, 나머지가 모두 다른 가장 작은 양의 정수를 찾으려고 한다.</p>
20+
21+
### 입력
22+
23+
<p>첫째 줄에 테스트 케이스의 개수 N이 주어진다. 각 테스트 케이스의 첫째 줄에는 상근이가 가르치는 학생의 수 G가 (1 ≤ G ≤ 300) 주어진다. 다음 G개 줄에는 학생의 학번이 한 줄에 하나씩 주어진다. 학번이 같은 경우는 없다.</p>
24+
25+
### 출력
26+
27+
<p>각 테스트 케이스마다, 학번을 m으로 나눈 나머지가 모두 다른 가장 작은 정수 m을 출력한다.</p>
28+
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import java.util.*;
2+
3+
public class Main {
4+
private static int T; // 테스트케이스 수
5+
private static int G; // 학생 수
6+
private static int[][] students; // 학생별 학번
7+
private static HashSet<Integer> remains; // 학번을 m으로 나눈 나머지값
8+
9+
public static void main(String[] args) {
10+
Scanner sc = new Scanner(System.in);
11+
T = sc.nextInt();
12+
students = new int[T][];
13+
remains = new HashSet<>();
14+
15+
for(int i=0; i<T; i++) {
16+
G = sc.nextInt();
17+
students[i] = new int[G];
18+
for(int j=0; j<G; j++) {
19+
students[i][j] = sc.nextInt();
20+
}
21+
findRemain(students[i]);
22+
}
23+
24+
// for(int i=0; i<T; i++) {
25+
// System.out.println(Arrays.toString(students[i]));
26+
// }
27+
}
28+
29+
private static void findRemain(int[] students) {
30+
int remain = -1;
31+
int i = 1;
32+
33+
while(true) {
34+
remains.clear();
35+
boolean answer = true;
36+
37+
for(int s : students) {
38+
remain = s % i;
39+
if(!remains.add(remain)) {
40+
answer = false;
41+
break;
42+
}
43+
}
44+
45+
if(answer) {
46+
System.out.println(i);
47+
return;
48+
}
49+
i++;
50+
}
51+
}
52+
}
53+

0 commit comments

Comments
 (0)