알고리즘
백준 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;
}
}