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)