1. 600 - 그래프 1
1-1. ABCDE (13023)
import java.io.*;
import java.util.*;
class P13023_ABCDE {
static ArrayList<Integer>[] al;
static int N, M;
static boolean[] visited;
static boolean bl;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
visited = new boolean[N];
al = new ArrayList[N];
for (int i = 0; i < N; i++) {
al[i] = new ArrayList<>();
}
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
al[a].add(b);
al[b].add(a);
}
bl = false;
for (int i = 0; i < N; i++) {
if (!visited[i]) {
visited[i] = true;
dfs(i, 0);
visited[i] = false;
}
if (bl) {
break;
}
}
if (bl) {
bw.write("1\n");
} else {
bw.write("0\n");
}
bw.flush();
bw.close();
br.close();
}
public static void dfs(int num, int depth) {
if (depth == 4) {
bl = true;
return;
}
for (int i : al[num]) {
if (!visited[i]) {
visited[i] = true;
dfs(i, depth + 1);
visited[i] = false;
}
}
}
}

2. 601 - 그래프 1 (연습)
3. 602 - 그래프 1 (도전)
4. 610 - BFS
5. 620 - 트리 1
5-1. 트리 순회 (1991)
import java.io.*;
import java.util.StringTokenizer;
class Node {
char value;
Node left;
Node right;
public Node(char value) {
this.value = value;
this.left = null;
this.right = null;
}
}
public class P1991_트리순회 {
static Node[] tree;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
tree = new Node[N + 1];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
char root = st.nextToken().charAt(0);
char left = st.nextToken().charAt(0);
char right = st.nextToken().charAt(0);
if (tree[root - 'A'] == null) {
tree[root - 'A'] = new Node(root);
}
if (left != '.') {
tree[left - 'A'] = new Node(left);
tree[root - 'A'].left = tree[left - 'A'];
}
if (right != '.') {
tree[right - 'A'] = new Node(right);
tree[root - 'A'].right = tree[right - 'A'];
}
}
preorder(tree[0]);
System.out.println();
inorder(tree[0]);
System.out.println();
postorder(tree[0]);
System.out.println();
}
public static void preorder(Node node) {
if (node == null) return;
System.out.print(node.value);
preorder(node.left);
preorder(node.right);
}
public static void inorder(Node node) {
if (node == null) return;
inorder(node.left);
System.out.print(node.value);
inorder(node.right);
}
public static void postorder(Node node) {
if (node == null) return;
postorder(node.left);
postorder(node.right);
System.out.print(node.value);
}
}
