delpho
[JAVA] 백준 3085 - 사탕 게임 본문
문제가 조금 어려웠다..
제 생각에, 이 문제에서 떠올려야 할 중요한 부분은
- 4방탐색 (인접한 부분이 다르다면)
- 행, 열 탐색 (최대 길이의 연속된 문자 길이를 체크 후 max에 저장)
이라고 생각합니다.
하단은 저의 코드이며, 질문, 태클 환영입니닷!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class BJ_3085_사탕게임 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
char[][] map = new char[N][N];
for (int i = 0; i < N; i++) {
char[] tmp = br.readLine().toCharArray();
for (int j = 0; j < N; j++) {
map[i][j] = tmp[j];
}
}
int max = 0;
// 상, 하, 좌, 우
int[][] dd = {{-1,0},{1,0},{0,-1},{0,1}};
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
for (int j2 = 0; j2 < 4; j2++) {
int row = i+dd[j2][0];
int col = j+dd[j2][1];
if(row>=0 && col>=0 && row<N && col<N && map[i][j] != map[row][col]) {
char tmp = map[i][j];
map[i][j] = map[row][col];
map[row][col] = tmp;
// 행, 열 탐색을 위한 코드
// 문자 별로 체크하는 것이 아닌, 문자가 연속되면 Cnt를 늘려가는 방식
for (int l = 0; l < N; l++) {
int rowCnt = 1;
int colCnt = 1;
for (int k = 0; k < N-1; k++) {
if(map[k][l] == map[k+1][l]) rowCnt++;
else rowCnt=1;
if(map[l][k] == map[l][k+1]) colCnt++;
else colCnt=1;
max = Math.max(max, rowCnt);
max = Math.max(max, colCnt);
}
}
tmp = map[i][j];
map[i][j] = map[row][col];
map[row][col] = tmp;
}
}
}
}
System.out.println(max);
}
}
|
cs |
개인적으로 생각하는 이 문제에서의 중요 코드
for (int l = 0; l < N; l++) {
int rowCnt = 1;
int colCnt = 1;
for (int k = 0; k < N-1; k++) {
if(map[k][l] == map[k+1][l]) rowCnt++;
else rowCnt=1;
if(map[l][k] == map[l][k+1]) colCnt++;
else colCnt=1;
max = Math.max(max, rowCnt);
max = Math.max(max, colCnt);
}
}
|
cs |
'알고리즘 > BFS, DFS' 카테고리의 다른 글
[골드3, BFS+PQ] 백준 16236 - 아기 상어 (자바) (0) | 2024.04.11 |
---|---|
[골드3, BFS] 백준 2206 - 벽 부수고 이동하기 (자바) (0) | 2024.04.09 |
[골드4, BFS] 백준 16234 - 인구이동 (자바) (1) | 2024.02.27 |
[골드 5, BFS] 백준 7576 - 토마토 (자바) (0) | 2024.02.19 |
[JAVA, 실버1, bfs] 백준 2178 - 미로 탐색 (0) | 2022.10.14 |