Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 5052. 전화번호 목록 본문

acmicpc

[BAEKJOON] 5052. 전화번호 목록

코드와이 2021. 8. 24. 17:08

 

문제링크

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);
	}
}