1. 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class BOJ14503 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(in.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[][] map = new int[N][M];
int[][] dir = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } };
st = new StringTokenizer(in.readLine());
int r = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
st = new StringTokenizer(in.readLine());
for (int j = 0; j < M; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
int cnt = 0;
map[r][c] = -1;
cnt++;
while (true) {
boolean isPossible = false;
for (int i = 0; i < 4; i++) {
d += (d == 0) ? 3 : -1;
int nr = r + dir[d][0];
int nc = c + dir[d][1];
if (map[nr][nc] == 0) {
r = nr;
c = nc;
isPossible = true;
break;
}
}
if (isPossible) {
map[r][c] = -1;
cnt++;
} else {
int nd = (1 < d) ? d - 2 : d + 2;
r += dir[nd][0];
c += dir[nd][1];
if (map[r][c] == 1) {
break;
}
}
}
out.write(sb.append(cnt).toString());
out.close();
in.close();
}
}
2. 채첨현황
