https://www.acmicpc.net/problem/3085
코드설명
구현과 브루트포스 문제입니다.
문제에 주어진대로 그대로 구현하면 되는 문제입니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static int N;
public static int answer = 0;
public static char[][] map;
public static int[] dx = {-1,1,0,0}; //상, 하, 좌, 우
public static int[] dy = {0,0,-1,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());
map = new char[N][N];
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
map[i] = st.nextToken().toCharArray();
}
simulate();
System.out.println(answer);
}
public static void simulate() {
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
for(int dir = 0; dir<4;dir++) {
int nr = i + dx[dir];
int nc = j + dy[dir];
if(nr < 0 || nr >= N || nc < 0 || nc >= N) continue;
// ijTemp map[i][j]
// nrncTemp map[nr][nc]
char ijTemp;
char nrncTemp;
if(map[i][j] != map[nr][nc]) {
ijTemp = map[i][j];
nrncTemp = map[nr][nc];
map[i][j] = map[nr][nc];
map[nr][nc] = ijTemp;
checkLine();
if(answer == N) {
System.out.println(answer);
System.exit(0);
}
map[i][j] = ijTemp;
map[nr][nc] = nrncTemp;
}
}
}
}
}
public static void checkLine() {
//행 먼저 검사
for(int i=0;i<N;i++) {
int temp = 0;
char start = map[i][0]; //일단 초기화.
for(int j=0;j<N;j++) {
if(start == map[i][j]) {
temp += 1;
}else if(start != map[i][j]) {
answer = Math.max(answer, temp);
temp = 1;
start = map[i][j];
}
}
answer = Math.max(answer, temp);
}
//열 검사
for(int i=0;i<N;i++) {
int temp = 0;
char start = map[i][0]; //일단 초기화.
for(int j=0;j<N;j++) {
if(start == map[j][i]) {
temp += 1;
}else if(start != map[j][i]) {
answer = Math.max(answer, temp);
temp = 1;
start = map[j][i];
}
}
answer = Math.max(answer, temp);
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2529 부등호 - 브루트포스 + 구현 JAVA (0) | 2023.09.07 |
---|---|
[백준] 1080 행렬 - 그리디(탐욕법, Greedy) + 구현 + 비트마스크(BitMask) JAVA (0) | 2023.09.06 |
[백준] 9084 동전 - DP JAVA (0) | 2023.09.06 |
[백준] 2294 동전 2 - DP JAVA (0) | 2023.09.05 |
[백준] 2293 동전 1 - DP JAVA (0) | 2023.09.05 |