본문 바로가기
Problem Solving/Baekjoon

[백준] 3711 학번 - Brute Force / Java

by graycode 2023. 11. 26.

 문제 링크

 

3711번: 학번

Z 대학교 학생은 입학할 때 학번을 받게 된다. 학번은 0보다 크거나 같고, 106-1보다 작거나 같은 정수이다. Z 대학의 김상근 교수는 학번으로 학생들을 구분한다. 상근이는 학생들을 조금 더 쉽게

www.acmicpc.net

 

 풀이 코드

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Main {

    static int[] arr, visit;

    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

        int n = read(), g, m;
        while (n-- > 0) {
            arr = new int[g = read()];
            visit = new int[1000000];
            while (g-- > 0) arr[g] = read();

            m = 0;
            while (++m < Integer.MAX_VALUE) if (isDistinct(m)) break;

            sb.append(m).append("\n");
        }

        bw.write(sb.toString());
        bw.flush();
    }

    private static boolean isDistinct(int m) {
        for (int i : arr) {
            if (visit[i % m] == m) return false;
            visit[i % m] = m;
        }

        return true;
    }

    private static int read() throws IOException {
        int c, n = System.in.read() & 15;
        while ((c = System.in.read()) > 32) n = (n << 3) + (n << 1) + (c & 15);

        return n;
    }

}

댓글