baekjoon/String
백준 14725번 : 개미굴 [자바]
Meluu_
2025. 6. 28. 08:55
🧫 문제 분석
✔️ 출처
📖 문제
트리로 풀어야하는데 Set이랑 문자열로 풀었다.
레벨 별 Set을 만들고
Set에 현재 레벨의 문자열을 체크하면서
추가한다.
Tree 를 이용한 풀이를 꺼렸던게
정렬때문이였는데
생각해보니 TreeMap이 있었다.
노드 만들어서 자식을 TreeMap에 넣고 진행하면 될 것 같다.
🔅 문제 풀이 [Set 풀이]
import java.io.*;
import java.util.*;
public class Main {
static final int MAX_LEVEL = 15;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] input = new String[n];
Set<String>[] levels = new Set[MAX_LEVEL]; // 레벨에 따른 Set 생성
for (int i = 0; i < MAX_LEVEL; i++) {
levels[i] = new HashSet<>();
}
for (int i = 0; i < n; i++) {
input[i] = br.readLine();
if (Character.isDigit(input[i].charAt(1))) {
input[i] = input[i].substring(3);
} else {
input[i] = input[i].substring(2);
}
}
Arrays.sort(input);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
StringBuilder check = new StringBuilder();
int idx = 0;
for (String str : input[i].split(" ")) {
check.append(str);
if (!levels[idx].contains(check.toString())) {
levels[idx].add(check.toString());
sb.append("--".repeat(idx)).append(str);
sb.append("\n");
}
idx++;
}
}
System.out.print(sb.toString());
}
}
❗ 오답노트 / 필요한 지식
- 자꾸 사소한 곳에서 실수하는데 숫자가 15까지 입력될 수 있는데 이걸 캐치못해서 당황한게 좀 그렇다.
- 문제 풀이는 이렇게 해보자
- 문제의 조건과 입력 길이, 크기 ,타입 등 면밀히 분석
- 문제 접근 방법 생각 (그리면서)
- 사용할 수 있는 자료구조 찾기
- 풀이