본문으로 바로가기

[백준/Python(파이썬)] 14500 테트로미노

category PS/백준 2021. 2. 14. 17:16

2021-02-04

문제 : https://www.acmicpc.net/problem/14500

 

14500번: 테트로미노

폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변

www.acmicpc.net

브루트포스 문제! 완전 노가다 문제였다

처음에 폴리오미노 모양을 배열로 만들어서 넣을지 고민했는데 종이에 그려보니까 종류가 너무 많아서 바로 합 계산하는 코드로 만들었다

 

[소스코드]

https://github.com/jisun1125/algorithm-problem-solving/blob/main/baekjoon/no_14500.py

 

jisun1125/algorithm-problem-solving

Algorithms. Contribute to jisun1125/algorithm-problem-solving development by creating an account on GitHub.

github.com

n, m = map(int, input().split())
t = []
for i in range(n):
    t.append(list(map(int, input().split())))
#print(t)

ans = []
for i in range(n):  # 세로
    for j in range(m):  # 가로
        if j+3 < m:
            ans.append(t[i][j]+t[i][j+1]+t[i][j+2]+t[i][j+3])

        if i+3 < n:
            ans.append(t[i][j]+t[i+1][j]+t[i+2][j]+t[i+3][j])

        if j+1 < m and i+1 < n:  # 정사각형
            ans.append(t[i][j]+t[i+1][j]+t[i][j+1]+t[i+1][j+1])

        if j+1 < m and i+2 < n:
            ans.append(t[i][j] + t[i+1][j] + t[i+2][j] + t[i+2][j+1])
            ans.append(t[i][j] + t[i][j+1] + t[i+1][j+1] + t[i+2][j+1])
            ans.append(t[i][j+1] + t[i+1][j+1] + t[i+2][j] + t[i+2][j+1])
            ans.append(t[i][j] + t[i][j+1] + t[i+1][j] + t[i+2][j])
            ans.append(t[i][j] + t[i+1][j] + t[i+1][j+1] + t[i+2][j+1])
            ans.append(t[i][j+1] + t[i+1][j] + t[i+1][j+1] + t[i+2][j])
            ans.append(t[i][j] + t[i+1][j] + t[i+1][j+1] + t[i+2][j])
            ans.append(t[i][j+1] + t[i+1][j] + t[i+1][j+1] + t[i+2][j+1])

        if j+2<m and i+1<n:
            ans.append(t[i][j] + t[i+1][j] + t[i][j+1] + t[i][j+2])
            ans.append(t[i+1][j] + t[i+1][j+1] + t[i+1][j+2] + t[i][j+2])
            ans.append(t[i][j] + t[i][j+1] + t[i][j+2] + t[i+1][j+2])
            ans.append(t[i][j] + t[i+1][j] + t[i+1][j+1] + t[i+1][j+2])
            ans.append(t[i+1][j] + t[i+1][j+1] + t[i][j+1] + t[i][j+2])
            ans.append(t[i][j] + t[i][j+1] + t[i+1][j+1] + t[i+1][j+2])
            ans.append(t[i][j] + t[i][j+1] + t[i+1][j+1] + t[i][j+2])
            ans.append(t[i+1][j] + t[i][j+1] + t[i+1][j+1] + t[i+1][j+2])

print(max(ans))