https://www.acmicpc.net/problem/9290
[난이도]
- Silver 4
[알고리즘]
- 부르트 포스
[코드]
import java.io.*;
import java.util.*;
public class Main {
static char[][] board;
static char player;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int x = Integer.parseInt(br.readLine());
board = new char[3][3];
for (int i = 1; i <= x; i++) {
for (int j = 0; j < 3; j++) {
String input = br.readLine();
for (int k = 0; k < 3; k++) {
board[j][k] = input.charAt(k);
}
}
player = br.readLine().charAt(0);
ticTacToe(player);
bw.write("Case " + i + ":\n" );
for (int a = 0; a < 3; a++) {
for (int b = 0; b < 3; b++) {
bw.write(board[a][b]);
}
bw.write("\n");
}
}
bw.flush();
bw.close();
br.close();
}
static void ticTacToe(char player) {
int count;
// 가로로 맞출수 있을 때
for (int i = 0; i < 3; i++) {
count = 0;
for (int j = 0; j < 3; j++) {
if (board[i][j] == player) {
count++;
}
}
if (count >= 2) {
board[i][0] = player;
board[i][1] = player;
board[i][2] = player;
return;
}
}
// 세로로 맞출수 있을 때
for (int i = 0; i < 3; i++) {
count = 0;
for (int j = 0; j < 3; j++) {
if (board[j][i] == player) {
count++;
}
}
if (count >= 2) {
board[0][i] = player;
board[1][i] = player;
board[2][i] = player;
return;
}
}
// 오른쪽 아래 대각선으로 가능할 때
count = 0;
for (int i = 0; i < 3; i++) {
int j = i;
if (board[i][j] == player) {
count++;
}
if (count >= 2) {
board[0][0] = player;
board[1][1] = player;
board[2][2] = player;
return;
}
}
// 왼쪽 아래 대각선으로 가능할 때
count = 0;
int j=2;
for (int i = 0; i < 3; i++) {
if (board[i][j] == player) {
count++;
}
if (count >= 2) {
board[0][2] = player;
board[1][1] = player;
board[2][0] = player;
return;
}
j--;
}
}
}
[풀이]
1. 가로로 가능할 때, 세로로 가능할 때, 대각선으로 가능할 때의 조건을 생각해준다.
2. player가 가진 말과 같은 말을 체크해가며 같을 경우 count를 1씩 증가시킨다.
3. count가 2일 경우 해당 줄을 모두 player의 말로 변경해주고 return 한다.
4. 보드판을 출력한다.
'코딩테스트' 카테고리의 다른 글
백준 4673: 셀프 넘버[JAVA] (0) | 2024.04.17 |
---|---|
백준 14501: 퇴사[JAVA] (0) | 2024.04.17 |
백준 5568: 카드 놓기[JAVA] (0) | 2024.04.14 |
백준 1639: 행운의 티켓[JAVA] (0) | 2024.04.13 |
백준 1544: 사이클 단어[JAVA] (0) | 2024.04.12 |