[BaekJoon] 5052 전화번호 목록 (Java)

오태호·2022년 10월 22일
0

백준 알고리즘

목록 보기
80/395

1.  문제 링크

https://www.acmicpc.net/problem/5052

2.  문제


요약

  • 전화번호 목록이 주어질 때, 목록이 일관성이 있는지 없는지 구하는 문제입니다.
  • 전화번호 목록이 일관성을 유지하려면 한 번호가 다른 번호의 접두어인 경우가 없어야 합니다.
  • 입력: 첫 번째 줄에 1보다 크거나 같고 50보다 작거나 같은 테스트 케이스의 개수 t가 주어지고 각 테스트 케이스의 첫 번째 줄에는 1보다 크거나 같고 10000보다 작거나 같은 전화번호 수 n이 주어지고 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 하나씩 주어집니다.
    • 전화번호의 길이는 길어야 10자리이며, 목록에 있는 두 전화번확 같은 경우는 없습니다.
  • 출력: 각 테스트 케이스에 대해 일관성이 있는 목록인 경우에는 YES, 아닌 경우에는 NO를 출력합니다.

3.  소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    static StringBuilder sb = new StringBuilder();
	static int n;
	static String[] phoneNumbers;
	static void input() {
		Reader scanner = new Reader();
		int testNum = scanner.nextInt();
		for(int test = 0; test < testNum; test++) {
			n = scanner.nextInt();
			phoneNumbers = new String[n];
			for(int count = 0; count < n; count++) {
				phoneNumbers[count] = scanner.nextLine();
			}
			solution();
		}
	}
	
	static void solution() {
		Arrays.sort(phoneNumbers);
		if(isDuplicate()) sb.append("NO").append('\n');
		else sb.append("YES").append('\n');
	}
	
	static boolean isDuplicate() {
		for(int index = 0; index < n - 1; index++) {
			if(phoneNumbers[index + 1].startsWith(phoneNumbers[index])) return true;
		}
		return false;
	}
	
	public static void main(String[] args) {
		input();
		System.out.println(sb);
	}
	
	static class Reader {
		BufferedReader br;
		StringTokenizer st;
		public Reader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}
		String next() {
			while(st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch(IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}
		int nextInt() {
			return Integer.parseInt(next());
		}
		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch(IOException e) {
				e.printStackTrace();
			}
			return str;
		}
	}
}
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글