본문 바로가기
백준/5001 - 10000

[백준] 5052번 : 전화번호 목록(JAVA)

by lms0806 2021. 7. 12.
728x90
반응형

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

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

풀이

테스트 케이스 수를 입력받습니다.

입력받을 전화번호 목록의 갯수를 입력받고 String 배열을 선언해줍니다.

String 배열에 전화번호 목록을 입력받습니다.

 

Arrays.sort()를 하여 배열을 정렬을 해 준 후

길이가 가장 짧은거부터 다음 문자열의 처음 부분에 해당되면 일관성이 없어 다른사람에게 연락이 갈 수 있기 때문에 "NO"를 출력해주고, 아닐경우 "YES"를 출력해주면 됩니다.

 

소스코드

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

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    
        int size = Integer.parseInt(br.readLine());
        
        StringBuilder sb = new StringBuilder();
        while(size --> 0) {
            int num = Integer.parseInt(br.readLine());
            
            String[] strs = new String[num];
            
            for(int i = 0; i < num; i++) {
                strs[i] = br.readLine();
            }
            
            Arrays.sort(strs, new Comparator<String>() {
                public int compare(String o1, String o2) {
                    return o1.compareTo(o2);
                }
            });
            
            String answer = "YES";
            for(int i = 1; i < num; i++) {
                if(strs[i].startsWith(strs[i-1])) {
                    answer = "NO";
                    break;
                }
            }
            sb.append(answer).append("\n");
        }
        System.out.print(sb);
    }
}

 

728x90
반응형

'백준 > 5001 - 10000' 카테고리의 다른 글

[백준] 1213번 : HTML(JAVA)  (0) 2021.08.17
[백준] 9342번 : 염색체(JAVA)  (0) 2021.08.09
[백준] 6721번 : Backward numbers(JAVA)  (0) 2021.08.02
[백준] 5489번 : Numbers(JAVA)  (0) 2021.07.24
[백준] 7120번 : String(JAVA)  (0) 2021.07.20

댓글