import sys
from collections import deque
counter = {0: 5, 1: 3, 2: 4, 3: 1, 4: 2, 5: 0}
N = int(input())
dice = []
for _ in range(N):
dice.append(list(map(int, sys.stdin.readline()[:-1].split())))
global_max = 0
for i in range(6):
dice_max_sum = []
tmp_dice = [1, 2, 3, 4, 5, 6]
tmp_dice.remove(dice[0][i])
previous_high = dice[0][counter[i]]
tmp_dice.remove(dice[0][counter[i]])
dice_max_sum.append(max(tmp_dice))
for j in range(1, N):
tmp_dice = [1, 2, 3, 4, 5, 6]
low_index = dice[j].index(previous_high)
tmp_dice.remove(dice[j][low_index])
previous_high = dice[j][counter[low_index]]
tmp_dice.remove(dice[j][counter[low_index]])
dice_max_sum.append(max(tmp_dice))
local_max = sum(dice_max_sum)
if local_max > global_max:
global_max = local_max
print(global_max)
- 딕셔너리 자료형을 이용하여 주사위의 밑면에 해당하는 윗면을 index로 매칭해줌
- brute force로 모든 경우를 확인해봐야함 (1번 주사위를 돌리는 경우 -> 6가지)
- 시간 제한 및 메모리 제한을 고려하여 tmp_dice를 선언해주고 여기에서 윗면과 밑면을 제거해줌
-> 윗면과 밑면을 제거한 tmp_dice에서의 최댓값이 각 층마다의 최댓값임