ALGORITHM
백준 5052 전화번호 목록 (Java)
공부하는_다온
2023. 6. 7. 22:30
1. 문제 링크
5052번: 전화번호 목록
첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가
www.acmicpc.net
2. 문제 및 입출력예제
3. 문제 풀이
1. N개의 전화번호를 입력받아 list에 넣는다.
2. list를 정렬한다. (문자열)
3. 비교 문자열보다 길이가 긴 경우에만 앞의 문자열만큼에서 같은지 판단한다.
3-1. 비교 문자열과 동일할 경우 일관성을 유지하지 못해 끝낸다.
4. 비교 문자열을 현재 문자열로 바꾼다.
5. 위의 과정을 반복하고 출력한다.
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int t=0;t<T;t++) {
int N = Integer.parseInt(br.readLine());
ArrayList<String> list = new ArrayList<>();
for(int i=0;i<N;i++) {
list.add(br.readLine());
}
Collections.sort(list);
int len = 11;
String now = "";
boolean flag = false;
for(String s: list) {
if(s.length()>len && now.equals(s.substring(0,len))) {
flag = true;
break;
}
now = s;
len = now.length();
}
if(flag) {
sb.append("NO");
}
else {
sb.append("YES");
}
sb.append("\n");
}
System.out.println(sb);
}
}