풀이
완전 탐색을 통해 상하좌우의 거리가 2인 위치에 콩이 없다면 콩을 놓게 하여 해결했습니다.
처음에는 dfs를 사용한 완전탐색을 하다가 런타임 에러가 나와서 고민을 했었던 문제입니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static int N, M, answer;
public static int[][] field;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder("");
StringTokenizer st = null;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; ++tc) {
st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
field = new int[M][N];
answer = 0;
for (int i = 0; i < M; ++i) {
for (int j = 0; j < N; ++j) {
answer++;
field[i][j] = 1;
for (int k = 0; k < 4; ++k) {
int ny = i + dy[k];
int nx = j + dx[k];
if (nx < 0 || ny < 0 || nx >= N || ny >= M) {
continue;
}
if (field[ny][nx] == 1) {
answer--;
field[i][j] = 0;
break;
}
}
}
}
sb.append("#").append(tc).append(" ").append(answer).append("\n");
}
System.out.println(sb);
}
public static int[] dx = {0, 0, -2, 2};
public static int[] dy = {-2, 2, 0 ,0};
}
'알고리즘 > SWEA' 카테고리의 다른 글
[Java] SWEA 7465번 창용 마을 무리의 개수 (0) | 2021.04.26 |
---|---|
[Java] SWEA 4366번 정식이의 은행 업무 (0) | 2021.04.20 |
[Java] SWEA 6855번 신도시 전기 연결하기 (0) | 2021.04.13 |
[Java] SWEA 3143번 가장 빠른 문자열 타이핑 (0) | 2021.04.12 |
[Java] SWEA 5643번 키 순서 (0) | 2021.04.06 |