๋ฌธ์
https://www.acmicpc.net/problem/14503
๋ฌธ์ ์ดํด
N×M ํฌ๊ธฐ์ ๋ฐฉ์ด ์ฃผ์ด์ง๋ค.
๋ก๋ด ์ฒญ์๊ธฐ๋ ์๋ ๊ท์น์ ๋ฐ๋ผ ์๋ํ๋ค.
- ํ์ฌ ์์น๋ฅผ ์ฒญ์ํ๋ค.
- ํ์ฌ ์์น์์ ์ผ์ชฝ ๋ฐฉํฅ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ํ๋ค.
- ์์ง ์ฒญ์ํ์ง ์์ ๋น ์นธ์ด ์์ผ๋ฉด ๊ทธ ์นธ์ผ๋ก ์ด๋ ํ 1๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ์์ผ๋ฉด ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์งํ ์ ์์ผ๋ฉด ํ์ง, ์๋๋ฉด ์๋์ ๋ฉ์ถ๋ค.
์ต์ข ์ ์ผ๋ก ๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์ฒญ์ํ๋ ์นธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
์๋ฎฌ๋ ์ด์ ๊ตฌํ
- ์ฒญ์ํ ๋๋ง๋ค ์นด์ดํธ๋ฅผ ์ฆ๊ฐ
- ๋ค ๋ฐฉํฅ ์ค ์ฒญ์๋์ง ์์ ์นธ์ด ์์ผ๋ฉด ํ์ ํ ์ด๋
- ๋ค ๋ฐฉํฅ ๋ชจ๋ ๋ถ๊ฐ๋ฅํ๋ฉด ํ์ง, ํ์ง๋ ๋ถ๊ฐ๋ฅํ๋ฉด ์ข ๋ฃ
์ฝ๋
import java.util.*;
import java.io.*;
public class Main {
static int n, m, r, c, dir, ans = 0;
static int[][] arr;
// ์ ์ฐ ํ ์ข
static int[] dr = { -1, 0, 1, 0 };
static int[] dc = { 0, 1, 0, -1 };
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
dir = Integer.parseInt(st.nextToken());
arr = new int[n][m];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
while (true) {
first();
if (arr[r + 1][c] == 0 || arr[r][c + 1] == 0 || arr[r - 1][c] == 0 || arr[r][c - 1] == 0) {
third();
} else {
if (second())
continue;
else
break;
}
}
System.out.println(ans);
}
static void first() {
if (arr[r][c] == 0) {
arr[r][c] = 2;
ans++;
}
}
static boolean second() {
int nr = r - dr[dir];
int nc = c - dc[dir];
if (arr[nr][nc] == 1)
return false;
r = nr;
c = nc;
return true;
}
static void third() {
dir = (dir - 1) < 0 ? 3 : (dir - 1);
int nr = r + dr[dir];
int nc = c + dc[dir];
if (arr[nr][nc] != 0)
return;
r = nr;
c = nc;
}
}'๐ญ Problem Solving > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ][Java] 15486. ํด์ฌ 2 (0) | 2025.09.15 |
|---|---|
| [BOJ][Java] 16930. ๋ฌ๋ฆฌ๊ธฐ (4) | 2025.09.09 |
| [SWEA][Java] 3421. ์์ ๋ฒ๊ฑฐ ์ฅ์ธ (4) | 2025.08.29 |
| [BOJ][Java] 1946. ์ ์ ์ฌ์ (1) | 2025.08.26 |
| [BOJ][Java] 2492. ๋ณด์ (0) | 2025.08.20 |