https://www.acmicpc.net/problem/2116
import sys
input = sys.stdin.readline
n = int(input())
dice = [list(map(int, input().split())) for _ in range(n)]
rotate = {0: 5, 1: 3, 2: 4, 3: 1, 4: 2, 5: 0} # 앞뒤 쌍을 딕셔너리 형태로 저장
sum_list = [] # 사이드 주사위 값들의 최댓값들을 저장하는 리스트
for i in range(6): # 첫 번째(맨아래)주사위 정하는 경우의 수 = 6번
max_dice_list = []
bottom_dice = [1,2,3,4,5,6]
bottom_side = dice[0][i] # 첫번째 주사위 - 아래의 주사위 값
upper_side = dice[0][rotate[i]] # 첫번째 주사위 - 위의 주사위 값
bottom_dice.remove(bottom_side)
bottom_dice.remove(upper_side)
max_dice_list.append(max(bottom_dice)) # 첫번째 주사위 - 위, 아래 주사위 값 제외 가장 큰 값 저장
for j in range(1, n):
next_dice = [1,2,3,4,5,6]
bottom_side = upper_side # 이전 주사위의 위 주사위 값 = 지금 주사위의 아래 주사위 값
upper_side_index = rotate[dice[j].index(bottom_side)] # 아래 주사위 값으로 위 주사위 인덱스 구하기
upper_side = dice[j][upper_side_index] # 위 주사위 인덱스 값으로 위 주사위 값 구하기
next_dice.remove(bottom_side)
next_dice.remove(upper_side)
max_dice_list.append(max(next_dice)) # 위, 아래 주사위 값 제외 가장 큰 값 저장
sum_list.append(sum(max_dice_list)) # 사이드 주사위 최댓값들을 모두 더한 값을 리스트에 저장
print(max(sum_list))
- 맨아래(첫번째) 주사위의 위or아래를 결정하면 나머지 주사위들은 자동으로 확정됨!
- 힌트보고 맨위(마지막)주사위 제외 다 6으로 맞추고 곱하려고 했는데 구현을 못해서 실패...^^
- 맨아래(첫번째) 주사위의 위or아래를 결정하는 경우의 수가 6이니까 시간 충분했다.
'백준' 카테고리의 다른 글
백준 11657. 타임머신 (0) | 2024.11.25 |
---|---|
백준 1446. 지름길 (0) | 2024.11.23 |
백준 2169. 로봇 조종하기 (0) | 2024.11.21 |
백준 2437. 저울 (0) | 2024.11.20 |
백준 15686. 치킨 배달 (0) | 2024.11.19 |