๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/7107)
< Journey of A Knight >
๋ฌธ์ ํ์ด
bfs๋ฅผ ํ์ฉํด (i, j) ์์น๋ก ์ด๋ํ ์ ์๋์ง ํ์ธํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _7107_ { // Journey of A Knight
static int dx[] = { -1, -2, -2, -1, 1, 2, 2, 1 };
static int dy[] = { -2, -1, 1, 2, 2, 1, -1, -2 };
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int i = Integer.parseInt(st.nextToken()) - 1;
int j = m - Integer.parseInt(st.nextToken());
boolean arr[][] = new boolean[m][n];
int x = m - 1, y = 0;
arr[x][y] = true;
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] { x, y, 0 });
boolean flag = false;
int result = -1;
while (!queue.isEmpty()) {
int temp[] = queue.poll();
for (int k = 0; k < 8; k++) {
x = temp[0] + dx[k];
y = temp[1] + dy[k];
if (x >= 0 && x < m && y >= 0 && y < n && !arr[x][y]) {
if (x == j && y == i) {
flag = true;
result = temp[2] + 1;
break;
}
arr[x][y] = true;
queue.add(new int[] { x, y, temp[2] + 1 });
}
}
if (flag) {
break;
}
}
if (result != -1) {
System.out.println(result);
} else {
System.out.println("NEVAR");
}
}
}
๋ณ์)
dx, dy : ์ด๋ ๋ฐฉํฅ
n, m : ๋ฐฐ์ด ํฌ๊ธฐ
i, j : ๋์ฐฉ ์์น
arr : ๋ฐฐ์ด
x, y : ํ์ฌ ์์น
flag : ๋์ฐฉ ๊ฐ๋ฅ ์ฌ๋ถ
result : ๋์ฐฉ ๊ฐ๋ฅํ ์ต์ ํ์
๋ฐฐ์ด ํฌ๊ธฐ n, m๊ณผ ๋์ฐฉ ์์น i, j๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ถ๋ฐ ์์น๋ฅผ (m-1, 0)์ผ๋ก ์ด๊ธฐํํ๊ณ ๋ฐฐ์ด ๊ฐ์ true๋ก ์ ์ฅํ๋ค. Queue์ ์์ ์์น์ ์ด๋ ํ์๋ฅผ ์ ์ฅํ ๋ค queue๊ฐ ๋น ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) queue poll
2) 8๋ฐฉํฅ์ผ๋ก ์ด๋ ํ ๋ฐฐ์ด ๋ฒ์ ์์ด๋ฉฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด ๋ฐฉ๋ฌธ ํ์ ๋ฐ queue์ ์ถ๊ฐ
3) ๋ง์ฝ ์ด๋ํ ์์น๊ฐ ๋์ฐฉ ์์น๋ผ๋ฉด ์ข ๋ฃ
result ๊ฐ์ด -1์ด ์๋๋ผ๋ฉด result ์ถ๋ ฅ, -1์ด๋ผ๋ฉด "NEVAR" ์ถ๋ ฅ

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 4351_Hay Points (1) | 2025.02.05 |
---|---|
[Baekjoon] 6513_Deli Deli (1) | 2025.02.04 |
[Baekjoon] 5093_Letter Replacement (1) | 2025.01.24 |
[Baekjoon] 31047_Warehouse (1) | 2025.01.23 |
[Baekjoon] 9357_Eligibility (1) | 2025.01.22 |