Data is ___ !

https://www.codetree.ai/ko/frequent-problems/samsung-sw/problems/max-sum-of-tetris-block/description

 

코딩테스트 기출 문제 설명: 테트리스 블럭 안의 합 최대화 하기 | 코드트리

코딩테스트 기출 문제 테트리스 블럭 안의 합 최대화 하기의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.

www.codetree.ai

 

  • 문제유형 : 시뮬레이션
  • 난이도 : L12
  • 정답률 : 48%

 

풀이 방법

 

 

코드

N, M = map(int, input().split())
board = []
for _ in range(N):
    board.append(list(map(int, input().split())))

max_sum = 0

for r in range(N):
    for c in range(M):
        # 1. 직사각형 세로
        if r+3 < N:
            A = 0
            for i in range(4):
                A += board[r+i][c]
            max_sum = max(max_sum, A)

        # 2. 직사각형 가로
        max_sum = max(max_sum, sum(board[r][c:c+4]))

        # 3. 정사각형
        if r+1 < N and c+1 < M:
            B = 0
            for i in range(2):
                for j in range(2):
                    B += board[r+i][c+j]
            max_sum = max(max_sum, B)
        
        # 4. 3x2 직사각형
        if r+2 < N and c+1 < M:
            C = 0
            for i in range(3):
                for j in range(2):
                    C += board[r+i][c+j]
            max_sum = max(max_sum, C-board[r][c+1]-board[r+1][c+1])
            max_sum = max(max_sum, C-board[r+1][c]-board[r+2][c])
            max_sum = max(max_sum, C-board[r][c]-board[r+1][c])
            max_sum = max(max_sum, C-board[r+1][c+1]-board[r+2][c+1])
            max_sum = max(max_sum, C-board[r][c+1]-board[r+2][c])
            max_sum = max(max_sum, C-board[r][c]-board[r+2][c+1])
            max_sum = max(max_sum, C-board[r][c+1]-board[r+2][c+1])
            max_sum = max(max_sum, C-board[r][c]-board[r+2][c])

        # 5. 2x3 직사각형
        if r+1 < N and c+2 < M:
            D = 0
            for i in range(2):
                for j in range(3):
                    D += board[r+i][c+j]
            max_sum = max(max_sum, D-board[r+1][c+1]-board[r+1][c+2])
            max_sum = max(max_sum, D-board[r][c]-board[r][c+1])
            max_sum = max(max_sum, D-board[r][c+1]-board[r][c+2])
            max_sum = max(max_sum, D-board[r+1][c]-board[r+1][c+1])
            max_sum = max(max_sum, D-board[r][c]-board[r+1][c+2])
            max_sum = max(max_sum, D-board[r+1][c]-board[r][c+2])
            max_sum = max(max_sum, D-board[r+1][c]-board[r+1][c+2])
            max_sum = max(max_sum, D-board[r][c]-board[r][c+2])

print(max_sum)
profile

Data is ___ !

@콩순이컴퓨터

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...