💡 문제

💬 입출력 예시

📌 풀이(소스코드)
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
를 출력함