[๋ฐฑ์ค€-14500] ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ / Python

๐Ÿ“š Problem Solving/Baekjoon

 

14500๋ฒˆ: ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ

ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋ž€ ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ด์–ด์„œ ๋ถ™์ธ ๋„ํ˜•์ด๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. ์ •์‚ฌ๊ฐํ˜•์€ ์„œ๋กœ ๊ฒน์น˜๋ฉด ์•ˆ ๋œ๋‹ค. ๋„ํ˜•์€ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ •์‚ฌ๊ฐํ˜•์˜ ๋ณ€

www.acmicpc.net

import sys

input = sys.stdin.readline
n, m = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(n)]
tetromino = [
    [(0, 0), (0, 1), (1, 0), (1, 1)],
    [(0, 0), (0, 1), (0, 2), (0, 3)],
    [(0, 0), (1, 0), (2, 0), (3, 0)],
    [(0, 0), (0, 1), (0, 2), (1, 0)],
    [(1, 0), (1, 1), (1, 2), (0, 2)],
    [(0, 0), (1, 0), (1, 1), (1, 2)],
    [(0, 0), (0, 1), (0, 2), (1, 2)],
    [(0, 0), (1, 0), (2, 0), (2, 1)],
    [(2, 0), (2, 1), (1, 1), (0, 1)],
    [(0, 0), (0, 1), (1, 0), (2, 0)],
    [(0, 0), (0, 1), (1, 1), (2, 1)],
    [(0, 0), (0, 1), (0, 2), (1, 1)],
    [(1, 0), (1, 1), (1, 2), (0, 1)],
    [(0, 0), (1, 0), (2, 0), (1, 1)],
    [(1, 0), (0, 1), (1, 1), (2, 1)],
    [(1, 0), (2, 0), (0, 1), (1, 1)],
    [(0, 0), (1, 0), (1, 1), (2, 1)],
    [(1, 0), (0, 1), (1, 1), (0, 2)],
    [(0, 0), (0, 1), (1, 1), (1, 2)],
]


answer = 0


def func(x, y):
    global answer
    for i in range(19):
        result = 0
        cnt = 0
        for j in range(4):
            nx = x + tetromino[i][j][0]
            ny = y + tetromino[i][j][1]
            if 0 <= nx < n and 0 <= ny < m:
                result += board[nx][ny]
                cnt += 1
        if cnt == 4:
            answer = max(answer, result)


for i in range(n):
    for j in range(m):
        func(i, j)

print(answer)

 

ํ•ด์„ค

๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋„ํ˜•์˜ ์ขŒํ‘œ๋ฅผ ์ €์žฅํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.

๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ์ขŒํ‘œ์— ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘” ๋„ํ˜•์˜ ์ขŒํ‘œ๋ฅผ ๋”ํ•ด๊ฐ€๋ฉฐ ๋„ค ์นธ์ด ๋ชจ๋‘ ๋ฒ”์œ„ ์•ˆ์— ์žˆ์„ ๋•Œ ๊ทธ ํ•ฉ์„ ๊ตฌํ•ด์ค€๋‹ค.