๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/28471)
< Wํค๊ฐ ๋น ์ง ์ฑ์์ด >
๋ฌธ์ ํ์ด
F์์๋ถํฐ ์ด๋ํด์ ๊ฐ ์ ์๋ ๊ณณ์ ์ฐพ๋๋ค. ๋จ, ์์ชฝ์ผ๋ก 1์นธ ์ด๋ํ๋ Wํค๊ฐ ๊ณ ์ฅ๋ ๊ฒ์ด๋ฏ๋ก F์์ ์ด๋ํ ๋๋ ์๋๋ก 1์นธ ์ด๋ํ๋ ๊ฒ์ ์ ์ธํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class _28471_ { // Wํค๊ฐ ๋น ์ง ์ฑ์์ด
static int dx[] = { -1, 0, 0, -1, 1, -1, 1 };
static int dy[] = { 0, -1, 1, 1, 1, -1, -1 };
static int n;
static boolean visited[][];
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(bf.readLine());
char arr[][] = new char[n][n];
visited = new boolean[n][n];
int x = 0, y = 0;
for (int i = 0; i < n; i++) {
String str = bf.readLine();
for (int j = 0; j < n; j++) {
arr[i][j] = str.charAt(j);
if (arr[i][j] == 'F') {
x = i;
y = j;
visited[x][y] = true;
} else if (arr[i][j] == '#') {
visited[i][j] = true;
}
}
}
System.out.println(bfs(x, y));
}
private static int bfs(int x, int y) {
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] { x, y });
int cnt = 0;
while (!queue.isEmpty()) {
int temp[] = queue.poll();
for (int i = 0; i < 7; i++) {
int a = temp[0] + dx[i];
int b = temp[1] + dy[i];
if (a >= 0 && a < n && b >= 0 && b < n) {
if (!visited[a][b]) {
cnt += 1;
visited[a][b] = true;
queue.add(new int[] { a, b });
}
}
}
}
return cnt;
}
}
๋ณ์)
n : ๊ฒ์ํ์ ํฌ๊ธฐ
arr : ๊ฒ์ํ ์ ๋ณด
visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
x, y : ๋ชฉ์ ์ง ์ขํ
๊ฒ์ํ ํฌ๊ธฐ n์ ์ ๋ ฅ๋ฐ๋๋ค. ๊ฒ์ํ ํฌ๊ธฐ๋งํผ ๊ฒ์ํ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ค. ์ ์ฅํ๋ฉด์ ๋ชฉ์ ์ง ์์น๋ฅผ ์ฐพ์ x, y ์ขํ์ ์ ์ฅํ๊ณ , ์ด๋ํ ์ ์๋ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ์ฐพ์ visited ๋ฐฐ์ด์ ๋ฐฉ๋ฌธ ํ์๋ฅผ ํ๋ค. ๋ชฉ์ ์ง ์ขํ๋ฅผ bfsํจ์์ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ค๋ค. bfsํจ์ ํธ์ถํ ํ ๋ฐํ๊ฐ์ ์ ๋ต์ผ๋ก ์ถ๋ ฅํ๋ค.
bfs(int x, int y)
Queue์ ์์ ์ขํ์ธ x, y ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ํ๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) queue poll
2) ์๋๋ก 1์นธ ์ด๋ํ๋ ๊ฒ์ ์ ์ธํ 7๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ํ๋ค.
3) ์ด๋ํ ๊ฐ์ด ๊ฒ์ํ ๋ฒ์ ์์ด๋ฉฐ, ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ผ๋ฉด ๋ฐฉ๋ฌธ ํ์ ๋ฐ cnt+1์ ํ๊ณ queue์ ์ ์ฅํ๋ค.
์ต์ข cnt๋ฅผ ๋ฐํํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 12927_๋ฐฐ์ ์ค์์น (0) | 2024.04.11 |
---|---|
[Baekjoon] 3060_์์ฌ์์ด ๋ผ์ง (1) | 2024.04.10 |
[Baekjoon] 1347_๋ฏธ๋ก ๋ง๋ค๊ธฐ (0) | 2024.04.05 |
[Baekjoon] 21919_์์ ์ต์ ๊ณต๋ฐฐ์ (0) | 2024.04.04 |
[Baekjoon] 1835_์นด๋ (0) | 2024.04.03 |