https://www.acmicpc.net/problem/5052
์ ์ ํ ๋ ๋ฌธ์์ด ๋น๊ตํด์ ํ์๋๋ฐ, ์ด๋ฒ์ ํธ๋ผ์ด ์จ๋ณด๋ ค๊ณ ํ์๋ค.
ํธ๋ผ์ด๋ ๋ฌธ์์ด ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์๋ฃ๊ฐ ์ ์ํ์ผ ๋ ์ด์งํ์ํธ๋ฆฌ๊ฐ O(logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ฐ,
๋ฌธ์์ด์ผ ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ M์ด๋ฉด O(MlogN) ์ด๋ค.
์ด๋ ํธ๋ผ์ด๋ฅผ ์ด์ฉํ๋ฉด O(M)์ ํด๊ฒฐํ ์ ์๋ค.
import java.io.*;
import java.util.*;
public class boj5052 {
private static class Trie {
boolean isEnd = false;
Map<Character, Trie> child = new HashMap<>();
public void add(String num) {
Trie trie = this;
int size = num.length();
for (int i=0; i<size; i++) {
char c = num.charAt(i);
trie.child.putIfAbsent(c, new Trie());
trie = trie.child.get(c);
if (i == size - 1) {
trie.isEnd = true;
}
}
}
public boolean contains(String num) {
Trie trie = this;
int size = num.length();
for (int i=0; i<size; i++) {
char c = num.charAt(i);
Trie child = trie.child.get(c);
if (child == null) {
return false;
}
if (child.isEnd) {
return true;
}
trie = child;
}
return false;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int t=0; t<T; t++) {
int n = Integer.parseInt(br.readLine());
Trie trie = new Trie();
String[] nums = new String[n];
for (int i=0; i<n; i++) {
nums[i] = br.readLine();
}
Arrays.sort(nums);
boolean flag = true;
for (String num : nums) {
if (trie.contains(num)) {
sb.append("NO\n");
flag = false;
break;
}
trie.add(num);
}
if (flag) {
sb.append("YES\n");
}
}
System.out.print(sb);
}
}
๊ฐ ํ ์คํธ์ผ์ด์ค๋ง๋ค ๋ฌธ์์ด ๋ชฉ๋ก์ด ๋ค์ด์ค๋ฉด
1. ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
2. ํธ๋ผ์ด์ ํด๋น ๋ฌธ์์ด์ ๋ถ๋ถ ๋ฌธ์์ด์ด ์กด์ฌํ๋ฉด (isEnd = true์ธ ๋ ธ๋ ์กด์ฌ) "NO"๋ฅผ ์ถ๋ ฅํ๊ณ ๋ฉ์ถ๋ค.
3. ์กด์ฌํ์ง ์์ผ๋ฉด ํธ๋ผ์ด์ ํด๋น ๋ฌธ์์ด์ ์ถ๊ฐํ๋ค.
4. ๋ชจ๋ ๋ฌธ์์ด์ ๋ถ๋ถ ๋ฌธ์์ด์ด ์กด์ฌํ์ง ์์ผ๋ฉด "YES"๋ฅผ ์ถ๋ ฅํ๋ค.
'๐ค > ์๊ณ ๋ฆฌ์ฆ ์ฌํ์ด๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (1) | 2025.05.02 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ๊ฐ์ฅ ํฐ ์ (1) | 2025.04.14 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์บ์ (1) | 2025.03.21 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์์ (1) | 2025.03.17 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ๊ทค ๊ณ ๋ฅด๊ธฐ (1) | 2025.03.12 |