Skip to content

Commit 38b8796

Browse files
authored
Merge pull request #63 from kohtaewoo/feat/boj-Oct
feat(Taewoo): add/Baekjoon-1167, Baekjoon-1260, Baekjoon-2178
2 parents 96b3e43 + 4cf755b commit 38b8796

3 files changed

Lines changed: 180 additions & 0 deletions

File tree

Taewoo/Oct/Baekjoon-1167.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package Baekjoon;
2+
3+
import java.io.*;
4+
import java.util.*;
5+
6+
public class Main {
7+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
9+
static StringTokenizer st;
10+
static int N;
11+
static ArrayList<int[]>[] graph;
12+
static boolean[] vistied;
13+
14+
public static void main(String[] args) throws IOException {
15+
st = new StringTokenizer(br.readLine());
16+
N = Integer.valueOf(st.nextToken());
17+
18+
graph = new ArrayList[N + 1];
19+
for (int i = 1; i <= N; i++) {
20+
graph[i] = new ArrayList<>();
21+
}
22+
23+
int u, v;
24+
int value;
25+
for (int i = 1; i <= N; i++) {
26+
st = new StringTokenizer(br.readLine());
27+
u = Integer.valueOf(st.nextToken());
28+
value = Integer.valueOf(st.nextToken());
29+
v = Integer.valueOf(st.nextToken());
30+
31+
graph[u].add(new int[] { v, value });
32+
}
33+
}
34+
35+
public static void bfs(int node) {
36+
Deque<Integer> queue = new ArrayDeque<>();
37+
queue.add(node);
38+
while (!queue.isEmpty()) {
39+
int next_node = queue.poll();
40+
for (int[] neighbor : graph[next_node]) {
41+
int neighbor_node = neighbor[0];
42+
queue.add(neighbor_node);
43+
44+
}
45+
}
46+
}
47+
}

Taewoo/Oct/Baekjoon-1260.java

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
6+
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
7+
static StringTokenizer st;
8+
static ArrayList<Integer>[] graph;
9+
static boolean[] visited;
10+
11+
public static void main(String[] args) throws IOException {
12+
st = new StringTokenizer(br.readLine());
13+
int N = Integer.valueOf(st.nextToken());
14+
int M = Integer.valueOf(st.nextToken());
15+
int V = Integer.valueOf(st.nextToken());
16+
17+
graph = new ArrayList[N + 1];
18+
for (int i = 1; i <= N; i++) {
19+
graph[i] = new ArrayList<>();
20+
}
21+
visited = new boolean[N + 1];
22+
23+
int u;
24+
int v;
25+
for (int i = 1; i <= M; i++) {
26+
st = new StringTokenizer(br.readLine());
27+
u = Integer.valueOf(st.nextToken());
28+
v = Integer.valueOf(st.nextToken());
29+
graph[u].add(v);
30+
graph[v].add(u);
31+
}
32+
33+
for (int i = 1; i <= N; i++) {
34+
Collections.sort(graph[i]);
35+
}
36+
37+
dfs(V);
38+
39+
visited = new boolean[N + 1];
40+
Deque<Integer> queue = new ArrayDeque<>();
41+
queue.add(V);
42+
visited[V] = true;
43+
44+
bw.write("\n");
45+
46+
int node;
47+
while (!queue.isEmpty()) {
48+
node = queue.poll();
49+
bw.write(String.valueOf(node) + " ");
50+
for (int neighbor : graph[node]) {
51+
if (!visited[neighbor]) {
52+
visited[neighbor] = true;
53+
queue.add(neighbor);
54+
}
55+
}
56+
}
57+
58+
bw.close();
59+
60+
}
61+
62+
public static void dfs(int node) throws IOException {
63+
visited[node] = true;
64+
bw.write(String.valueOf(node) + " ");
65+
66+
for (int neighbor : graph[node]) {
67+
if (!visited[neighbor]) {
68+
dfs(neighbor);
69+
}
70+
}
71+
}
72+
}

Taewoo/Oct/Baekjoon-2178.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
6+
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
7+
static StringTokenizer st;
8+
static int[][] distance;
9+
static int N;
10+
static int M;
11+
static int[][] maze;
12+
static int[] dx = { 0, 0, 1, -1 };
13+
static int[] dy = { 1, -1, 0, 0 };
14+
15+
public static void main(String[] args) throws IOException {
16+
st = new StringTokenizer(br.readLine());
17+
N = Integer.valueOf(st.nextToken());
18+
M = Integer.valueOf(st.nextToken());
19+
maze = new int[N][M];
20+
distance = new int[N][M];
21+
22+
for (int i = 0; i < N; i++) {
23+
String line = br.readLine();
24+
for (int j = 0; j < M; j++) {
25+
maze[i][j] = line.charAt(j) - '0';
26+
}
27+
}
28+
29+
bfs(0, 0);
30+
bw.write(String.valueOf(distance[N - 1][M - 1]));
31+
bw.close();
32+
}
33+
34+
public static void bfs(int x, int y) {
35+
Deque<int[]> queue = new ArrayDeque<>();
36+
queue.add(new int[] { x, y });
37+
distance[x][y] = 1;
38+
39+
while (!queue.isEmpty()) {
40+
int current_x = queue.getFirst()[0];
41+
int current_y = queue.getFirst()[1];
42+
queue.poll();
43+
44+
for (int i = 0; i < 4; i++) {
45+
int next_x = current_x + dx[i];
46+
int next_y = current_y + dy[i];
47+
48+
if (next_x < 0 || next_y < 0 || next_x >= N || next_y >= M) {
49+
continue;
50+
}
51+
52+
if (maze[next_x][next_y] == 0 || distance[next_x][next_y] != 0) {
53+
continue;
54+
}
55+
56+
queue.add(new int[] { next_x, next_y });
57+
distance[next_x][next_y] = distance[current_x][current_y] + 1;
58+
}
59+
}
60+
}
61+
}

0 commit comments

Comments
 (0)