문제
- 맨 아래 주사위의 밑면을 지정하여 반복문을 실행 -> 즉 6회의 반복문을 실행
- 맨 아래 주사위의 상면도 알 수 있으므로 나머지 주사위도 똑같이 달릴 수 있습니다.
- 주사위마다 위, 아래를 제외한 측면 중 가장 큰 값을 계속해서 더해준 6회의 반복문에서 최대값을 출력
코드
def top(n, a):
arr = (n(5), n(3), n(4), n(1), n(2), n(0)) # A <-> F, B <-> D , C <-> E
return arr(a)
num = int(input())
dice = (list(map(int, input().split())) for _ in range(num))
max_dice = ()
for i in dice(0):
first = dice(0)(:) # 배열의 원소를 제거해야 해서 리스트 복사
side_sum = 0
top_num = top(first, first.index(i))
first.remove(i)
first.remove(top_num)
side_sum += max(first) # 옆면중 가장 큰값을 더해줌
for j in range(1, num):
lst = dice(j)(:)
bottom_num = top_num
top_num = top(lst, lst.index(top_num))
lst.remove(bottom_num)
lst.remove(top_num)
side_sum += max(lst)
max_dice.append(side_sum) # max_dice 리스트에 추가시켜줌
print(max(max_dice))