Posts [baekjoon] 14500. 테트로미노 (python)
Post
Cancel

[baekjoon] 14500. 테트로미노 (python)

14500. 테트로미노 문제 바로가기

해결 방법

테트로미노

주어진 테트로미노에 대한 모든 회전과 대칭에 대한 위치를 tetromino 리스트에 저장한다.

주어진 종이 board 의 모든 위치에 가능한 tetromino 를 둔다.

  • 이때 인덱스가 넘어갈 경우 놓인 칸의 합에 대한 비교를 하지 않도록 flag 변수를 두었다.
  • 인덱스가 넘어가지 않을 경우 최종 출력할 max_sum 변수와 비교하여 최대 합일 경우 max_sum 변수에 저장한다.

구현한 코드

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
N, M = map(int, input().split())
tetromino = [
    [[0, 0], [0, 1], [0, 2], [0, 3]], # 파란블록
    [[0, 0], [1, 0], [2, 0], [3, 0]], # 파란블록 회전
    [[0, 0], [0, 1], [1, 0], [1, 1]], # 노란블록
    [[0, 0], [1, 0], [2, 0], [2, 1]], # 주황블록
    [[0, 0], [0, 1], [0, 2], [-1, 2]], # 주황블록 회전
    [[0, 0], [0, 1], [1, 1], [2, 1]], # 주황블록 회전
    [[0, 0], [0, 1], [0, 2], [1, 0]], # 주황블록 회전
    [[0, 0], [0, 1], [-1, 1], [-2, 1]], # 주황블록 대칭
    [[0, 0], [0, 1], [0, 2], [1, 2]], # 주황블록 대칭 회전
    [[0, 0], [0, 1], [1, 0], [2, 0]], # 주황블록 대칭 회전
    [[0, 0], [1, 0], [1, 1], [1, 2]], # 주황블록 대칭 회전
    [[0, 0], [1, 0], [1, 1], [2, 1]], # 초록블록
    [[0, 0], [0, 1], [-1, 1], [-1, 2]], # 초록블록 회전
    [[0, 0], [0, 1], [-1, 1], [1, 0]], # 초록블록 회전
    [[0, 0], [0, 1], [1, 1], [1, 2]], # 초록블록 회전
    [[0, 0], [0, 1], [0, 2], [1, 1]], # 핑크블록
    [[0, 0], [1, 0], [2, 0], [1, 1]], # 핑크블록 회전
    [[0, 0], [0, 1], [0, 2], [-1, 1]], # 핑크블록 회전
    [[0, 0], [0, 1], [-1, 1], [1, 1]] # 핑크블록 회전
]

board = [list(map(int, input().split())) for _ in range(N)]
max_sum = 0
for y in range(N):
    for x in range(M):
        for tetro in tetromino: # 모든 위치 별로 tetromino 넣어보기
            temp_sum = 0
            flag = True
            for t in range(len(tetro)):
                ny, nx = y + tetro[t][0], x + tetro[t][1]
                if 0 <= ny < N and 0 <= nx < M:
                    temp_sum += board[ny][nx]
                else: # 해당 블록이 경계를 벗어나는 경우
                    flag = False 
                    break
            if flag and max_sum < temp_sum:
                max_sum = temp_sum
print(max_sum)
This post is licensed under CC BY 4.0 by the author.

[2020 KAKAO BLIND RECRUITMENT] 외벽 점검 (python)

[programmers] SQL 고득점 Kit - SUM, MAX, MIN 문제 답모음 (MySQL)

Comments powered by Disqus.