https://www.acmicpc.net/problem/3085
[풀이]
이중 for문으로 값을 하나씩 확인하기 때문에 오른쪽, 아래 부분의 값에 대해서 신경쓰면 된다. swap 메소드를 구현하려했지만 Call By Reference vs Call By Value 문제로 인해 Main 메소드 내에서 바꾸는 것이 훨씬 간단하다고 생각해서 따로 구현하지 않았다.
아래 블로그를 통해 다시 한번 공부할 수 있게 되었다!(만약, 헷갈리시는 분은 아래 글을 통해 공부하시면 좋을 것 같습니다!)
오른쪽, 아래를 확인해서 현재 값과 같다면 +1을, 그렇지 않으면 다시 1로 초기화를 했다. swap을 했을 때 check를 하고, 이후 원래대로 고쳐야 하기에 다시 한번 swap을 구현했다.
문제를 풀 때 주의할 점은, swap 메소드에 대한 이해, 오른쪽과 아래를 확인하면서 개수를 늘려가는 부분, 이 2가지라고 생각을 한다.
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int N;
static char[][] arr;
static int max_value = 0;
public static void check(char[][] arr) {
for (int i = 0; i < N; i++) {
int count = 1;
for (int j = 0; j < N - 1; j++) {
if (arr[i][j] == arr[i][j + 1]) {
count++;
} else {
count = 1;
}
max_value = Math.max(max_value, count);
}
}
for (int i = 0; i < N; i++) {
int count = 1;
for (int j = 0; j < N - 1; j++) {
if (arr[j][i] == arr[j + 1][i]) {
count++;
} else {
count = 1;
}
max_value = Math.max(max_value, count);
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(bf.readLine());
arr = new char[N][N];
for (int i = 0; i < N; i++) {
String line = bf.readLine();
for (int j = 0; j < N; j++) {
arr[i][j] = line.charAt(j);
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N - 1; j++) {
char temp = arr[i][j];
arr[i][j] = arr[i][j + 1];
arr[i][j + 1] = temp;
check(arr);
temp = arr[i][j];
arr[i][j] = arr[i][j + 1];
arr[i][j + 1] = temp;
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N - 1; j++) {
char temp = arr[j][i];
arr[j][i] = arr[j + 1][i];
arr[j + 1][i] = temp;
check(arr);
temp = arr[j][i];
arr[j][i] = arr[j + 1][i];
arr[j + 1][i] = temp;
}
}
System.out.println(max_value);
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 2108번 : 통계학(Java) (0) | 2021.07.31 |
---|---|
백준 2941번 : 크로아티아 알파벳(Java) (0) | 2021.07.30 |
백준 11719번 : 그대로 출력하기 2(Java) (0) | 2021.07.28 |
백준 9012번 : 괄호(Java) (0) | 2021.07.28 |
백준 9375번 : 패션왕 신해빈(Java) (0) | 2021.07.27 |