문제
계속 99%에서 틀렸습니다가 떠서 환장했던 문제ㅠㅠ
import java.io.*;
import java.util.*;
public class Main {
static int N;
static ArrayList<Integer>[] adjacent;
static boolean[] visited;
static int[] compArr2;
static StringBuilder sb = new StringBuilder();
static int index = 0;
private static void dfs(int pos) {
if (pos != compArr2[index++]) {
System.out.println(0);
System.exit(0);
}
visited[pos] = true;
if (index < N)
dfs(compArr2[index]);
for (int e : adjacent[pos]) {
if (!visited[e]) {
dfs(e);
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
adjacent = new ArrayList[N + 1];
visited = new boolean[N + 1];
for (int i = 1; i < N + 1; i++) {
adjacent[i] = new ArrayList<Integer>();
}
for (int i = 0; i < N - 1; i++) {
String[] info = br.readLine().split("\\s");
int a = Integer.parseInt(info[0]);
int b = Integer.parseInt(info[1]);
adjacent[a].add(b);
adjacent[b].add(a);
}
for (int i = 1; i < N + 1; i++) {
Collections.sort(adjacent[i]);
}
String comp = br.readLine();
String[] compArr = comp.split("\\s");
compArr2 = new int[N];
for (int i = 0; i < N; i++) {
compArr2[i] = Integer.parseInt(compArr[i]);
}
dfs(1);
System.out.println(1);
br.close();
}
}
질문에서 비슷한 문제가 나왔던 사람들은 맨 처음이 1이 아닐 경우를 체크 안해줘서라는데
나는 그 경우도 되는 거 아닌가... 뭘까..
'Preparing Coding Test > Algorithm' 카테고리의 다른 글
[Java] 투 포인터(Two Pointers), 구간 합(Prefix Sum) (0) | 2021.06.24 |
---|---|
[Java/백준/완전 탐색] 1018번: 체스판 다시 칠하기 (0) | 2020.12.15 |
우선순위 큐(Priority Queue) (0) | 2020.11.24 |
다이나믹 프로그래밍 (Dynamic Programming) (0) | 2020.09.25 |
[자료구조/Java] Queue 구현하기 in Java (0) | 2020.09.09 |