Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ์ฐ์ ์์ํ
- ์๋ฃ๊ตฌ์กฐ
- Dijkstra
- ์นด์นด์ค
- Union Find
- ์ฌ๊ท
- ์กฐํฉ
- upperbound
- ๋ค์ต์คํธ๋ผ
- ์ด๋ถํ์
- ๋ฐฑํธ๋ํน
- ๊ตฌํ
- BFS
- ๋นํธ๋ง์คํน
- ํ์๊ฐ์
- PriorityQueue
- ์์ด
- LowerBound
- ์ธ๊ทธ๋จผํธํธ๋ฆฌ
- ํธ๋ผ์ด
- dp
- ์ด์งํธ๋ฆฌ
- Floyd
- ์๋ฎฌ๋ ์ด์
- ํฌํฌ์ธํฐ
- ํ๋ก์ด๋์์
- Django
- ๋ถ๋ถ์งํฉ
- ๊ทธ๋ฆฌ๋
- dfs
Archives
- Today
- Total
J
[JAVA] BOJ ๋ฐฑ์ค 5052 ์ ํ๋ฒํธ ๋ชฉ๋ก ๋ณธ๋ฌธ
๐ Problem Solving/๐ BOJ
[JAVA] BOJ ๋ฐฑ์ค 5052 ์ ํ๋ฒํธ ๋ชฉ๋ก
snowball๐ฐ 2023. 5. 10. 10:16https://www.acmicpc.net/problem/5052
5052๋ฒ: ์ ํ๋ฒํธ ๋ชฉ๋ก
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ t๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ t ≤ 50) ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ ์ ํ๋ฒํธ์ ์ n์ด ์ฃผ์ด์ง๋ค. (1 ≤ n ≤ 10000) ๋ค์ n๊ฐ์ ์ค์๋ ๋ชฉ๋ก์ ํฌํจ๋์ด ์๋ ์ ํ๋ฒํธ๊ฐ
www.acmicpc.net
Trie ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
๐ก computeIfAbsent()
Map์์ ํน์ ํค์ ํด๋นํ๋ ๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธํ ํ, ์์ผ๋ฉด ์๋ก ๋ง๋ค์ด์ ๋ฃ์ด์ฃผ๋ ํํ์ ์ฝ๋์ด๋ค.
Key๊ฐ์ ํด๋นํ๋ value๊ฐ ์กด์ฌํ๋ฉด ๊ฐ์ ธ์์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉด ์๋ก ๋ง๋ค์ด์ฃผ๋ ํจํด์ ์ฝ๋๋ฅผ ์ํด computeIfAbsent()๋ผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์๋ค.
์
Value value = map.get(key);
if(value == null) {
value = getNewValue(key);
map.puy(key, value);
}
ํ
Value value = map.computeIfAbsent(key, k -> getNewValue(key));
import java.io.*;
import java.util.*;
public class boj_5052 {
static class Node{
Map<Character, Node> childNode = new HashMap<>();
boolean end;
}
static class MakeTrie{
Node rootNode = new Node();
boolean insert(String phone) {
Node node = this.rootNode;
boolean flag = false;
for(int p=0; p<phone.length(); p++) {
Node temp = node.childNode.getOrDefault(phone.charAt(p), null);
if(temp == null) flag = true;
node = node.childNode.computeIfAbsent(phone.charAt(p), key -> new Node());
if(node.end) return false;
}
node.end = true;
return flag;
}
}
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(bf.readLine());
for(int t=1; t<=T; t++) {
int N = Integer.parseInt(bf.readLine());
boolean flag = false;
MakeTrie trie = new MakeTrie();
for(int i=0; i<N; i++) {
if(!trie.insert(bf.readLine())) flag = true;
}
if(flag) sb.append("NO").append("\\n");
else sb.append("YES").append("\\n");
}
System.out.println(sb);
}
}
MakeTrie class๋ฅผ ์ดํด๋ณด์
static class MakeTrie{
Node rootNode = new Node();
boolean insert(String phone) {
Node node = this.rootNode;
boolean flag = false;
for(int p=0; p<phone.length(); p++) {
Node temp = node.childNode.getOrDefault(phone.charAt(p), null);
if(temp == null) flag = true;
node = node.childNode.computeIfAbsent(phone.charAt(p), key -> new Node());
if(node.end) return false;
}
node.end = true;
return flag;
}
}
- flag ๋ณ์๋ฅผ ํตํด ํด๋น ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ฌ๋ก ์กด์ฌํ๋ ์ง๋ฅผ ํ์ธํด์ค๋ค.
- for๋ฌธ์ ํตํด ์๋ก์ด ์ ํ๋ฒํธ๋ฅผ ์ฝ์ ํ๋ค.
- ํด๋น ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ๋ฅผ ์ ๋์ฌ๋ก์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก node.end๊ฐ ์ค๊ฐ์ true์ธ ๊ฒฝ์ฐ false๋ฅผ returnํด์ค๋ค.
main์ ์ดํด๋ณด์
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(bf.readLine());
for(int t=1; t<=T; t++) {
int N = Integer.parseInt(bf.readLine());
boolean flag = false;
MakeTrie trie = new MakeTrie();
for(int i=0; i<N; i++) {
if(!trie.insert(bf.readLine())) flag = true;
}
if(flag) sb.append("NO").append("\\n");
else sb.append("YES").append("\\n");
}
System.out.println(sb);
}
flag ๋ณ์๋ฅผ ํตํด์ insert ์ค false๊ฐ ๋ฐ์ํ๋ค๋ฉด flag๋ฅผ true๋ก ๋ฐ๊พผ๋ค.
flag๊ฐ true๋ฉด NO ์๋๋ฉด YES๋ฅผ ์ถ๋ ฅ
'๐ Problem Solving > ๐ BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] BOJ ๋ฐฑ์ค 2470 ๋ ์ฉ์ก (0) | 2023.07.07 |
---|---|
[JAVA] BOJ ๋ฐฑ์ค 14725 ๊ฐ๋ฏธ๊ตด (2) | 2023.05.10 |
[JAVA] BOJ ๋ฐฑ์ค 1941 ์๋ฌธ๋ ์น ๊ณต์ฃผ (0) | 2023.04.12 |
[JAVA] BOJ ๋ฐฑ์ค 9205 ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (0) | 2023.04.04 |
[JAVA] BOJ ๋ฐฑ์ค 1194 ๋ฌ์ด ์ฐจ์ค๋ฅธ๋ค, ๊ฐ์ (0) | 2023.03.31 |
Comments