Algorithm(CodeTree, Python)/완전탐색1

[코드트리 자리 수 단위로 완전탐색] 최고의 13위치 2 python

kurooru 2022. 11. 28. 13:36

와 이문제 생각보다 빡셌다

# n 입력
n = int(input())
# grid 입력
grid = [
    list(map(int, input().split()))
    for _ in range(n)
]

# 함수들
# is_duplicated(x, y)
def is_duplicated(x, y):
    # first_x, first_y ~ first_x, first_y + 2 까지 겹치면 True
    return x == first_x and (y == first_y or y == first_y - 1 or y == first_y - 2)

# 설계
# 첫 번째 최대 코인
first_max = 0

# 첫 번째 최대 코인의 좌표
first_x, first_y = 0, 0

# 첫 번째 완전 탐색
for i in range(n):
    for j in range(n-2):
        
        # curr_coin
        curr_coin = grid[i][j] + grid[i][j+1] + grid[i][j+2]

        # 현재의 동전이 first_max보다 많으면,
        if curr_coin >= first_max:
            # first_max 업데이트
            first_max = curr_coin
            # first_x, first_y 업데이트
            first_x, first_y = i, j

# second_max
second_max = 0

# 두 번째 완전 탐색
for i in range(n):
    for j in range(n-2):
        
        # 겹치지 않는 범위라면
        if not is_duplicated(i, j):

            # curr_coin
            curr_coin = grid[i][j] + grid[i][j+1] + grid[i][j+2]

            # second_max 업데이트
            second_max = max(second_max, curr_coin)

# 출력
print(first_max + second_max)