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

1 // t
2 // n
911
91

if(k == phoneNumber.length()-1) {
now.isEnd = true;
// 자식이 있으면 일관성 위배
for (tNode child : now.next) {
if (child != null) {
consistency = false;
break;
}
}
}2 // t
3 // n
911
97625999
91125426

if(now.isEnd) {
consistency = false;
break;
}import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine()); // 테스트 케이스 개수
for (int i = 0; i < t; i++) {
boolean consistency = true;
int n = Integer.parseInt(br.readLine()); // 전화번호 수
tNode root = new tNode(); // 루트노드는 공백으로
for (int j = 0; j < n; j++) {
String phoneNumber = br.readLine();
tNode now = root;
for (int k = 0; k < phoneNumber.length(); k++) {
char ch = phoneNumber.charAt(k);
if(now.next[ch - '0'] == null) {
now.next[ch - '0'] = new tNode();
}
if(now.isEnd) {
consistency = false;
break;
}
now = now.next[ch - '0'];
if(k == phoneNumber.length()-1) {
now.isEnd = true;
// 자식이 있으면 일관성 위배
for (tNode child : now.next) {
if (child != null) {
consistency = false;
break;
}
}
}
}
}
System.out.println(consistency ? "YES" : "NO");
}
}
static class tNode {
tNode[] next = new tNode[10];
boolean isEnd;
}
}
1
2
911
91