[λ°±μ€€-1051] 숫자 μ •μ‚¬κ°ν˜• / Python

πŸ“š Problem Solving/Baekjoon

 

1051번: 숫자 μ •μ‚¬κ°ν˜•

N*M크기의 μ§μ‚¬κ°ν˜•μ΄ μžˆλ‹€. 각 칸은 ν•œ 자리 μˆ«μžκ°€ μ ν˜€ μžˆλ‹€. 이 μ§μ‚¬κ°ν˜•μ—μ„œ 꼭짓점에 μ“°μ—¬ μžˆλŠ” μˆ˜κ°€ λͺ¨λ‘ 같은 κ°€μž₯ 큰 μ •μ‚¬κ°ν˜•μ„ μ°ΎλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μ΄λ•Œ, μ •μ‚¬κ°ν˜•μ€ ν–‰ λ˜λŠ”

www.acmicpc.net

import sys

input = sys.stdin.readline

n, m = map(int, input().split())
arr = [list(map(str, input().rstrip())) for _ in range(n)]
temp = min(n, m)
answer = 0
for i in range(n):
    for j in range(m):
        for k in range(temp):
            if i + k < n and j + k < m:
                if (
                    arr[i][j] == arr[i][j + k]
                    and arr[i][j] == arr[i + k][j]
                    and arr[i][j] == arr[i + k][j + k]
                ):
                    answer = max(answer, (k + 1) ** 2)
print(answer)

 

ν•΄μ„€

각 μ›μ†Œ λ³„λ‘œ kλ₯Ό 늘렀주며 μ •μ‚¬κ°ν˜•μ˜ 꼭짓점을 ν™•μΈν•œλ‹€. μ΄λ•Œ, 꼭짓점은 전체 μ§μ‚¬κ°ν˜•μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄ μ•ˆλœλ‹€. ν•΄λ‹Ή μ •μ‚¬κ°ν˜•μ˜ ν•œ λ³€μ˜ κΈΈμ΄λŠ” k+1이 λ˜λ―€λ‘œ λ„ˆλΉ„λŠ” (k+1)**2κ°€ λœλ‹€. 이 넓이 쀑 μ΅œλŒ€ 넓이λ₯Ό 좜λ ₯ν•œλ‹€.