본문 바로가기
Computer Science

회문2

by OKOK 2019. 1. 21.

1. 다른 알고리즘 x

2. 하나의 칸에 대해서 짝수 인지 홀수 인지만 나뉘어서 풀이함 ㅇㅋ


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
#include <stdio.h>
 
char board[100][101];
int main() {
    freopen("input.txt""r", stdin);
    int T, test_case;
    int max;
    int dm, dp;
    int tmp;
    int i, j;
    for (T = 0; T < 10++T) {
        max = 1;
        scanf("%d"&test_case);
        for (i = 0; i < 100++i)
            scanf("%s", board[i]);
        for (i = 0; i < 100++i) {
            for (j = 0; j < 100++j) {
                // 가로 짝수, 홀수
                
                dm = j; 
                dp = j + 1;
                if ((dp < 100&& (board[i][dm]) == board[i][dp]) {
                    tmp = 2;
                    while ((dm > 0&& (dp < 99&& (board[i][--dm] == board[i][++dp]))
                        tmp += 2;
                    if (max < tmp)
                        max = tmp;
                }
                dm = j - 1;
                dp = j + 1;
                if ((dm >= 0&& (dp < 100&& (board[i][dm]) == board[i][dp]) {
                    tmp = 3;
                    while ((dm > 0&& (dp < 99&& (board[i][--dm] == board[i][++dp]))
                        tmp += 2;
                    if (max < tmp)
                        max = tmp;
                }
                
                // 세로 짝수, 홀수
                
                dm = i;
                dp = i + 1;
                if ((dp < 100&& (board[dm][j] == board[dp][j])) {
                    tmp = 2;
                    while ((dm > 0&& (dp < 99&& (board[--dm][j] == board[++dp][j]))
                        tmp += 2;
                    if (max < tmp)
                        max = tmp;
                }
                dm = i - 1;
                dp = i + 1;
                if ((dm >= 0&& (dp < 100&& (board[dm][j] == board[dp][j]))
                {
                    tmp = 3;
                    while ((dm > 0&& (dp < 99&& (board[--dm][j] == board[++dp][j]))
                        tmp += 2;
                    if (max < tmp)
                        max = tmp;
                }
            }
        }
        printf("#%d %d\n", test_case, max);
    }
    return 0;
}
cs

 


'Computer Science' 카테고리의 다른 글

괄호짝짓기  (0) 2019.01.21
거듭 제곱  (0) 2019.01.21
회문1  (0) 2019.01.21
String  (0) 2019.01.21
Ladder2  (0) 2019.01.21

댓글