ํ’€์ด


๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๋ฌธ์ œ์ด๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„  2๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค.

  1. ์ธ์ ‘ํ•˜๋Š” ์‚ฌํƒ•์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๊ตํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ

  2. ํ–‰ ๋˜๋Š” ์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ์—ฐ์† ๋ถ€๋ถ„์„ ์ฐพ๋Š” ๊ธฐ๋Šฅ

2๋ฒˆ ๊ธฐ๋Šฅ์€ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•˜๊ณ  1๋ฒˆ ๊ธฐ๋Šฅ์ด ๋Œ์•„๊ฐˆ ๋•Œ๋งˆ๋‹ค 2๋ฒˆ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.

1๋ฒˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ ์€ ๊ฐ ์นธ์„ ๊ฒ€์‚ฌํ•  ๊ฒฝ์šฐ ์šฐ์ธก๊ณผ ํ•˜๋‹จ๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์†Œ์Šค์ฝ”๋“œ


import sys
 
input = sys.stdin.readline
 
 
def inspect(c, n):
    cnt = 1
    for i in range(n):
        cnt_row = 1
        cnt_col = 1
        for j in range(n - 1):
            # hotizontal inspection
            if c[i][j] == c[i][j + 1]:
                cnt_row += 1
            else:
                cnt = max(cnt, cnt_row)
                cnt_row = 1
            # vertical inspection
            if c[j][i] == c[j + 1][i]:
                cnt_col += 1
            else:
                cnt = max(cnt, cnt_col)
                cnt_col = 1
 
        cnt = max(cnt, cnt_row, cnt_col)
    return cnt
 
 
n = int(input())
c = [list(input().rstrip()) for _ in range(n)]
ans = 0
 
for i in range(n):
    for j in range(n - 1):
        # horizontal exchange
        if c[i][j] != c[i][j + 1]:
            c[i][j], c[i][j + 1] = c[i][j + 1], c[i][j]
            ans = max(ans, inspect(c, n))
            c[i][j], c[i][j + 1] = c[i][j + 1], c[i][j]
        # vertical exchange
        if c[j][i] != c[j + 1][i]:
            c[j][i], c[j + 1][i] = c[j + 1][i], c[j][i]
            ans = max(ans, inspect(c, n))
            c[j][i], c[j + 1][i] = c[j + 1][i], c[j][i]
 
print(ans)

References