Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 59aa34e

Browse files
authoredMay 4, 2025
Create BJ_9205_맥주마시면서이동하기.java
1 parent 8d6f311 commit 59aa34e

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
 
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.util.ArrayDeque;
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
import java.util.Queue;
8+
import java.util.StringTokenizer;
9+
10+
/**
11+
* 백준 9205번 맥주 마시면서 걸어가기
12+
* - BFS
13+
*/
14+
15+
public class Main {
16+
public static void main(String[] args) throws IOException {
17+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
18+
StringTokenizer st;
19+
20+
int t = Integer.parseInt(br.readLine());
21+
22+
for (int T = 0; T < t; T++) {
23+
int n = Integer.parseInt(br.readLine());
24+
25+
int[] home = new int[2];
26+
st = new StringTokenizer(br.readLine());
27+
home[0] = Integer.parseInt(st.nextToken());
28+
home[1] = Integer.parseInt(st.nextToken());
29+
30+
List<int[]> list = new ArrayList<>();
31+
for (int i = 0; i < n; i++) {
32+
st = new StringTokenizer(br.readLine());
33+
34+
int x = Integer.parseInt(st.nextToken());
35+
int y = Integer.parseInt(st.nextToken());
36+
37+
list.add(new int[] { x, y });
38+
}
39+
40+
int[] festival = new int[2];
41+
st = new StringTokenizer(br.readLine());
42+
festival[0] = Integer.parseInt(st.nextToken());
43+
festival[1] = Integer.parseInt(st.nextToken());
44+
45+
boolean isPossible = false;
46+
boolean[] visited = new boolean[list.size()];
47+
48+
Queue<int[]> queue = new ArrayDeque<>();
49+
queue.offer(home);
50+
51+
while (!queue.isEmpty()) {
52+
int[] cur = queue.poll();
53+
54+
int dist = Math.abs(cur[0] - festival[0]) + Math.abs(cur[1] - festival[1]);
55+
if (dist <= 1000) {
56+
isPossible = true;
57+
break;
58+
}
59+
60+
for (int i = 0; i < list.size(); i++) {
61+
int[] next = list.get(i);
62+
63+
dist = Math.abs(cur[0] - next[0]) + Math.abs(cur[1] - next[1]);
64+
if (dist <= 1000 && !visited[i]) {
65+
queue.offer(next);
66+
visited[i] = true;
67+
}
68+
}
69+
}
70+
71+
System.out.println(isPossible ? "happy" : "sad");
72+
}
73+
}
74+
}

0 commit comments

Comments
 (0)
Please sign in to comment.