BOJ_S1_9205
๐ [S1_9205] ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int N, sx, sy, dx, dy;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = null;
// ํ
์คํธ ์ผ์ด์ค
int TC = Integer.parseInt(br.readLine());
for (int tc = 0; tc < TC; tc++) {
// ํธ์์ ๊ฐ์
N = Integer.parseInt(br.readLine());
// ํธ์์ ๋ง ์ ์ฅํ๋ ๋ฐฐ์ด
List<int[]> list = new ArrayList<>();
for (int i = 0; i < N + 2; i++) {
st = new StringTokenizer(br.readLine(), " ");
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
// ์ถ๋ฐ์
if (i == 0) {
sx = x;
sy = y;
}
// ๋์ฐฉ์
else if (i == N + 1) {
dx = x;
dy = y;
}
// ํธ์์
else {
list.add(new int[] {x,y});
}
}
// bfs์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ๋ผ ์ถ๋ ฅ
String str = "";
if(bfs(list)){
str = "happy";
}
else{
str = "sad";
}
sb.append(str).append("\n");
}
System.out.print(sb);
}
// bfs
static boolean bfs(List<int[]> list) {
// ๋ฐฉ๋ฌธ์ฒดํฌ
boolean[] v = new boolean[N];
Queue<int[]> q = new LinkedList<>();
q.add(new int[] {sx, sy});
while (!q.isEmpty()) {
int[] d = q.poll();
// ํ์ฌ ์ขํ ๊ฐ
int px = d[0];
int py = d[1];
// ๋ง์ง๋ง
// ๋งฅ์ฃผ๊ฐ ๋จ๋ ๊ฒฝ์ฐ
if (Math.abs(px - dx) + Math.abs(py - dy) <= 1000) {
return true;
}
// ํธ์์ ๋๊ธฐ
for (int i = 0; i < N; i++) {
// ๋ฐฉ๋ฌธ ์ํ ๊ฒฝ์ฐ
if (!v[i]) {
// list์์ ๊ฐ ๊ฐ์ ธ์จ๋ค
int nx = list.get(i)[0];
int ny = list.get(i)[1];
// ๊ฑฐ๋ฆฌ ์ฒดํฌ
// ๋งฅ์ฃผ๊ฐ ๋จ๋ ๊ฒฝ์ฐ
if (Math.abs(px - nx) + Math.abs(py - ny) <= 1000) {
v[i] = true;
q.add(new int[] {nx, ny});
}
}
}
}
return false;
}
}
๐ค ๋์ ์๊ฐ
์ฒ์์ ๋ฌธ์ ๋ฅผ ์๋ชป์ดํดํ๋ค..
๊ทธ๋ฅ ์์๊ฐ ์ ํด์ ธ์๋์ค ์์๋๋ฐ ๊ทธ๊ฒ ์๋์๋ค.. ใ
ใ
ใ
์ด๋ฏธ ๋ฌธ์ ๋ฅผ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ค ํ๊ณ ํ๋ฆฌ๊ณ ๋์ ๊นจ๋ฌ์ ๊ฒ .. ใ
ใ
๊ทธ๋์ ๋ณด๋ ํธ์์ ๊ฐ๋ ์์๊ฐ ์๊ด ์๋ ๊ฒ์ ๋ณด๊ณ bfs๋ฅผ ํตํด ๊ตฌํํ๋ค.
์ฃผ์ํ ์ ์ x,y ๊ฐ์ ํตํด ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ 20*50์ 1000์ด๋ฏ๋ก 1000๋ณด๋ค ์์ผ๋ฉด ๋งฅ์ฃผ๋ฅผ ๋จน์ ์ ์์ผ๋ฏ๋ก true์ด๊ณ 1000์ ๋์ผ๋ฉด ๋งฅ์ฃผ๋ฅผ ๋ชป ๋จน์ผ๋ฏ๋ก false์ด๋ค.