문제
https://www.acmicpc.net/problem/2116
제출한 풀이
- A B C D E F 는 0, 1, 2, 3, 4, 5 인덱스를 부여하고
- 0이 마주보는 면을 5, 1이 마주보는 면을 3, 2가 마주보는 면을 4 ... 이런식으로 딕셔너리에 해당면의 짝을 지정함
- 맨 아래 면을 1부터시작하여 맨 아래 면과 마주보는 면을 옆면에 올 수있는 면 리스트에서 제외하면
- 4개의 면이 남는데 이 중 가장 큰 면을 max_dice_list에 저장함.
- 맨 아래 주사위 위에 있는 주사위도 마찬가지로 맨 아랫면과 그 면을 마주보는 면도 옆면에 올 수 있는 리스트에서 제거하여 max_dice_list에 저장함
- 마지막 주사위까지 max_dice_list에 해당 주사위가 옆면에 올 수 있는 최대 값을 저장함
- 맨 아랫면을 2부터 시작하고 3~7과정을 반복 한 후 최대 값 리스트들 중에서 가장 큰 값을 결과값으로 출력함.
구현한 코드는 다음과 같음.
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):
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(upper_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))
'Problem Solving > CT-Python' 카테고리의 다른 글
[백준/자료구조] 1966: 프린터 큐 - 파이썬 (0) | 2022.05.16 |
---|---|
[백준/자료구조] 1620: 나는야 포켓몬 마스터 이다솜 - 파이썬 (0) | 2022.05.13 |
[백준/누적합] 11659: 구간 합 구하기 - 파이썬 (0) | 2022.05.13 |
[백준/구현] 2304: 창고 다각형 - 파이썬 (0) | 2022.05.13 |
[백준/DP] 2491: 수열 - 파이썬 (0) | 2022.05.13 |