코드와이
[BAEKJOON] 5052. 전화번호 목록 본문
문제링크
https://www.acmicpc.net/problem/5052
5052번: 전화번호 목록
첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가
www.acmicpc.net
우선순위 큐는 숫자의 사전식 정렬이 안되고 List sort 는 잘 된다.
package acmicpc.Gold4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class 전화번호_목록 {
static int n;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int tc = 0 ; tc < T ; tc++) {
n = Integer.parseInt(br.readLine());
// pq 는 안되고 array sort 는 된다.
// PriorityQueue<String> list = new PriorityQueue<>((o1, o2) -> (o1.compareTo(o2)));
// list.add("91125426"); list.add("97625999"); list.add("911"); list.add("976");
List<String> list = new ArrayList<>();
for(int i = 0 ; i < n ; i++) {
list.add(br.readLine());
}
// System.out.println(list);
Collections.sort(list);
boolean flag = true;
for(int i = 0 ; i < n - 1; i++) {
String str = list.get(i);
if(str.length() > list.get(i + 1).length()) continue;
if(str.equals(list.get(i + 1).substring(0,str.length()))) {
flag = false;
break;
}
}
if(flag) sb.append("YES").append("\n");
else sb.append("NO").append("\n");
}
sb.setLength(sb.length() - 1);
System.out.println(sb);
}
}
'acmicpc' 카테고리의 다른 글
[BAEKJOON] 1963. 소수경로 (0) | 2021.08.28 |
---|---|
[BAEKJOON] 14002. 가장 큰 증가하는 부분수열 4 (0) | 2021.08.26 |
[BAEKJOON] 1715. 카드 정렬하기 (0) | 2021.08.22 |
[BAEKJOON] 15684. 사다리 조작 (0) | 2021.08.19 |
[BAEKJOON] 1339. 단어수학 (0) | 2021.08.14 |