Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스택
- 프로그래머스
- 우선순위큐
- 브루트포스
- 백트래킹
- 트라이
- 2019 KAKAO BLIND RECRUITMENT
- 최소 신장 트리
- 2020 카카오 인턴십
- 다익스트라
- 파이썬
- 2021 KAKAO BLIND RECRUITMENT
- 백준
- 플로이드와샬
- 이분탐색
- 2020 KAKAO BLIND RECRUITMENT
- GIT
- Spring
- SWEA
- 플로이드 와샬
- 비트마스킹
- 구현
- 시뮬레이션
- 투 포인터
- 크루스칼
- 투포인터
- 조합
- 로봇 청소기
- 2018 KAKAO BLIND RECRUITMENT
- BFS
Archives
- Today
- Total
개발조아
[BOJ/백준] 2116 주사위 쌓기 파이썬 본문
728x90
문제 링크 : https://www.acmicpc.net/problem/2116
주사위를 수직으로 쌓을때 서로 맞닿은 부분의 눈이 같아야하고 전부다 쌓았을 때 양옆 주사위 눈의 합의 최대값을 구하는 문제이다.
주사위 눈은 1-6, 2-4, 3-5가 서로 위아래로 짝지어져있기 때문에 반대편은 자동적으로 따라온다.
나는 주사위 눈을 짝지어서 배열에 저장했다.
전체 주사위를 돌면서 저장한 주사위 눈의 짝에서 값을 찾고 반대쪽을 다음 대상으로 바꿔가면서 반복문을 진행했다.
양옆의 숫자중 최대값은 4,5,6중 하나이므로 6,5가 있는지 체크해서 최대값을 구해서 더해나갔다.
from sys import stdin
input = stdin.readline
n = int(input())
dices = [[] for _ in range(n)]
answer = 0
for idx in range(n):
nums = list(map(int, input().split()))
dices[idx].append((nums[0],nums[5]))
dices[idx].append((nums[1],nums[3]))
dices[idx].append((nums[2],nums[4]))
def solv():
for dice in dices[0]:
for target in dice:
select_num(target)
print(answer)
def select_num(target):
global answer
total = 0
for idx in range(n):
for dice in dices[idx]:
if target in dice:
if 6 in dice:
if 5 in dice:
total += 4
else:
total += 5
else:
total += 6
if target == dice[0]:
target = dice[1]
break
else:
target = dice[0]
break
answer = max(answer,total)
solv()
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 18808 스티커 붙이기 파이썬 (0) | 2021.08.20 |
---|---|
[BOJ/백준] 16985 Maaaaaaaaaze 파이썬 (0) | 2021.08.19 |
[BOJ/백준] 9934 완전 이진 트리 파이썬 (0) | 2021.08.19 |
[BOJ/백준] 12904 A와 B 파이썬 (0) | 2021.08.18 |
[BOJ/백준] 13459 구슬 탈출 파이썬 (0) | 2021.08.18 |
Comments