1. 유형
문자열
2. 풀이법
문자열 길이가 작은 순으로 정렬한다
set을 이용해서 들어있는 문자를 탐색한다
3. 코드
package 문자열;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class back_5052전화번호_목록 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine(), " ");
int t=Integer.valueOf(st.nextToken());
for(int tc=1; tc<=t;tc++) {
st = new StringTokenizer(in.readLine(), " ");
int n = Integer.valueOf(st.nextToken());
String str[] = new String[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(in.readLine(), " ");
str[i] = st.nextToken();
}
Arrays.sort(str, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
return o1.length() - o2.length();
}
});
//set에 넣는다
Set<String> set = new HashSet<>();
set.add(str[0]);
//문자열 하나씩 비교한다
boolean flag = true;
out:for(int i=1;i<str.length;i++) {
//true를 반환하면 반복 종료하고 flag false로 반환
String tmp = "";
for(int j=0;j<str[i].length();j++) {
tmp+=str[i].charAt(j);
if(set.contains(tmp)==true) {
flag = false;
break out;
}
}
set.add(str[i]);
//false면 계속 반복진행
}
if(flag) {
System.out.println("YES");
}else {
System.out.println("NO");
}
}
}
}
정렬하는 코드는 한번 더 봐야겠다
Arrays.sort(str, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
return o1.length() - o2.length();
}
});
'알고리즘 > 백준' 카테고리의 다른 글
[백준 - 14890] 골드3 - 경사로 (0) | 2020.10.29 |
---|---|
[백준 - 2800] 골드5 - 괄호 제거 (문자열) (0) | 2020.10.25 |
[백준 - 9935] 골드4 - 문자열 폭발 (0) | 2020.10.25 |
[백준 - 11000] 골드5 - 강의실 배정 (0) | 2020.10.22 |
[백준 - 2812] 골드5 -크게 만들기 (0) | 2020.10.20 |