알고리즘

백준 1235번 학생 번호 (JAVA)

박카스마시며코딩 2023. 8. 19. 21:09

https://www.acmicpc.net/problem/1235

 

1235번: 학생 번호

첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부

www.acmicpc.net

 

저는 구현을 통해 문제를 해결하였습니다.

각각의 길이에 대해 set을 통해 구분할 수 있는지를 판단하여 답을 구하였습니다.

 

package BOJ.etc;

import java.awt.print.Pageable;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

public class BOJ_1235 {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String[] numbers = new String[n];
        for(int i = 0 ; i < n ; i++){
            numbers[i] = br.readLine();
        }
        int answer = numbers[0].length();
        for(int i = 1 ; i < numbers[0].length() ; i++){
            if(check(numbers,i)){
                answer = i;
                 break;
            }
        }
        System.out.println(answer);
    }

    private static boolean check(String[] numbers, int num) {
        Set<String> set = new HashSet<>();
        int size = numbers[0].length();
        for(String str : numbers) {
            String temp = str.substring(size - num,size);
            if(set.contains(temp)){
                return false;
            }
            set.add(temp);
        }
        return true;
    }
}