https://www.acmicpc.net/problem/5052
5052번: 전화번호 목록
첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가
www.acmicpc.net
1. 맨 처음 거 해시에 박고
2. 들어오는 거 한 글자씩 tmp에 붙여나가면서 hash에 있는지 조회 있으면 NO로 변경 없으면 YES 유지
3. tmp 자체가 hashkey의 접두어 인지도 hashkey를 전부 조회하며 체크
4. n번 반복
결과: 시간초과
1. 정렬하기
2. i번째와 i+1번째의 단어 비교하기
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int test_case;
test_case = Integer.parseInt(br.readLine());
for (int t = 0; t < test_case; t++) {
int n;
String[] number;
boolean consistency = true;
n = Integer.parseInt(br.readLine());
number = new String[n];
for (int i = 0; i < n; i++)
number[i] = br.readLine();
무난하게 입력받기
Arrays.sort(number);
for(int i = 0 ; i < n-1 ; i++){
String tmp1 = number[i];
String tmp2 = number[i+1];
int index =0;
while ( index< tmp1.length() && index< tmp2.length()){
if(tmp1.charAt(index) != tmp2.charAt(index))
break;
index++;
}
if(index == tmp1.length() || index == tmp2.length())
consistency=false;
}
if (consistency)
sb.append("YES");
else
sb.append("NO");
System.out.println(sb);
sb.setLength(0);
}
}
}
코드 리뷰 x