[BOJ] 5052번 전화번호 목록 - JAVA

최영환·2023년 3월 29일
0

BaekJoon

목록 보기
49/87
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

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

public class Main {
    static int T, N;
    static String[] numbers;
    static StringBuilder result = new StringBuilder();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        T = Integer.parseInt(br.readLine());
        for (int t = 0; t < T; t++) {
            input(br);
            setResult();
        }
        print();
    }

    private static void input(BufferedReader br) throws IOException {
        N = Integer.parseInt(br.readLine());
        numbers = new String[N];
        for (int i = 0; i < N; i++) {
            numbers[i] = br.readLine();
        }
    }

    private static boolean isValid() {
        Arrays.sort(numbers);
        boolean isValid = true;
        for (int i = 0; i < N - 1; i++) {
            if (numbers[i + 1].startsWith(numbers[i])) {
                isValid = false;
                break;
            }
        }
        return isValid;
    }

    private static void setResult() {
        if (isValid()) result.append("YES\n");
        else result.append("NO\n");
    }

    private static void print() {
        System.out.println(result);
    }
}

📄 해설

  • 생각보다 단순한 로직의 문제
  • 문자열 배열을 입력받고, 정렬한 다음 첫번째 문자열부터 N-1 번째 문자열까지 반복문을 수행하면서 다음 문자열이 현재 문자열로 시작하는지를 확인
  • 다음 문자열이 현재 문자열로 시작하면 일관성이 없으므로 NO 를 출력하고, 그렇지 않으면 YES 를 출력함
profile
조금 느릴게요~

0개의 댓글