# 유형 : 탐색 + 시뮬레이션

# 난이도 : 실버 4

# 브루트포스 문제였는데, 모든 배열의 값을 좌우, 상하로 바꾸면서 최댓값을 찾게 구현하면 된다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package bj;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class p3085 {
    static int N, result = Integer.MIN_VALUE;
    static char arr[][];
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        arr = new char[N][N];
        for(int i=0; i<N; i++) {
            String str = br.readLine();
            for(int j=0; j<N; j++)
                arr[i][j] = str.charAt(j);
        }
        
        for(int i=0; i<N; i++) {
            for(int j=0; j<N-1; j++) {
                change(i,j,i,j+1);
                result = Math.max(result, solve());
                change(i,j,i,j+1);
            }
        }
        for(int j=0; j<N; j++) {
            for(int i=0; i<N-1; i++) {
                change(i,j,i+1,j);
                result = Math.max(result, solve());
                change(i,j,i+1,j);
            }
        }
        System.out.println(result);
    }
    private static int solve() {
        int rs = 1;
        // Compare Col value
        for(int i=0; i<N; i++) {
            int val = 1;
            for(int j=1; j<N; j++) {
                if(arr[i][j-1== arr[i][j]) {
                    val++;
                }else {
                    rs = Math.max(rs, val);
                    val = 1;
                }
            }
            rs = Math.max(rs, val);
        }
        for(int j=0; j<N; j++) {
            int val = 1;
            for(int i=1; i<N; i++) {
                if(arr[i-1][j] == arr[i][j]) {
                    val++;
                }else {
                    rs = Math.max(rs, val);
                    val = 1;
                }
            }
            rs = Math.max(rs, val);
        }
        return rs;
    }
    private static void change(int i, int j, int k, int l) {
        // TODO Auto-generated method stub
        char tmp = arr[i][j];
        arr[i][j] = arr[k][l];
        arr[k][l] = tmp;
    }
}
 
cs

+ Recent posts