Problem Solving/Baekjoon
[백준] 2615 오목 - Brute Force / Java
graycode
2023. 1. 8. 15:59
• 문제 링크
2615번: 오목
오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호
www.acmicpc.net
• 풀이 과정
• 풀이 코드
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 Main {
static int[][][] map = new int[21][21][5];
static int[] dy = {1, 1, 0, -1};
static int[] dx = {0, 1, 1, 1};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
for (int i = 1; i <= 19; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 1; j <= 19; j++)
map[i][j][4] = Integer.parseInt(st.nextToken());
}
bw.write(search());
bw.flush();
}
private static String search() {
for (int j = 1; j <= 19; j++) {
for (int i = 1; i <= 19; i++) {
if (map[i][j][4] == 0)
continue;
for (int k = 0; k < 4; k++) {
if (map[i][j][k] == 0 && check(i, j, k, map[i][j][4]) == 5)
return map[i][j][4] + "\n" + i + " " + j;
}
}
}
return "0";
}
private static int check(int y, int x, int dir, int color) {
y += dy[dir];
x += dx[dir];
if (map[y][x][4] == color)
return map[y][x][dir] = check(y, x, dir, color) + 1;
return 1;
}
}