[BOJ][๐ŸŸก4][๋ฐฑ์ค€#02116] ์ฃผ์‚ฌ์œ„ ์Œ“๊ธฐ

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #2116


๋ฌธ์ œ

์ฒœ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์Œ“๊ธฐ ๋†€์ด๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์ฃผ์‚ฌ์œ„์˜ ๋ชจ์–‘์€ ๋ชจ๋‘ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ์ •์œก๋ฉด์ฒด์ด๋ฉฐ ๊ฐ ๋ฉด์—๋Š” 1๋ถ€ํ„ฐ 6๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜์”ฉ ์ ํ˜€์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณดํ†ต ์ฃผ์‚ฌ์œ„์ฒ˜๋Ÿผ ๋งˆ์ฃผ ๋ณด๋Š” ๋ฉด์— ์ ํ˜€์ง„ ์ˆซ์ž์˜ ํ•ฉ์ด ๋ฐ˜๋“œ์‹œ 7์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ฃผ์‚ฌ์œ„ ์Œ“๊ธฐ ๋†€์ด๋Š” ์•„๋ž˜์—์„œ๋ถ€ํ„ฐ 1๋ฒˆ ์ฃผ์‚ฌ์œ„, 2๋ฒˆ ์ฃผ์‚ฌ์œ„, 3๋ฒˆ ์ฃผ์‚ฌ์œ„, โ€ฆ ์˜ ์ˆœ์„œ๋กœ ์Œ“๋Š” ๊ฒƒ์ด๋‹ค. ์Œ“์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ง€์ผœ์•ผ ํ•œ๋‹ค: ์„œ๋กœ ๋ถ™์–ด ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์ฃผ์‚ฌ์œ„์—์„œ ์•„๋ž˜์— ์žˆ๋Š” ์ฃผ์‚ฌ์œ„์˜ ์œ—๋ฉด์— ์ ํ˜€์žˆ๋Š” ์ˆซ์ž๋Š” ์œ„์— ์žˆ๋Š” ์ฃผ์‚ฌ์œ„์˜ ์•„๋žซ๋ฉด์— ์ ํ˜€์žˆ๋Š” ์ˆซ์ž์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ, 1๋ฒˆ ์ฃผ์‚ฌ์œ„ ์œ—๋ฉด์˜ ์ˆซ์ž๋Š” 2๋ฒˆ ์ฃผ์‚ฌ์œ„ ์•„๋žซ๋ฉด์˜ ์ˆซ์ž์™€ ๊ฐ™๊ณ , 2๋ฒˆ ์ฃผ์‚ฌ์œ„ ์œ—๋ฉด์˜ ์ˆซ์ž๋Š” 3๋ฒˆ ์ฃผ์‚ฌ์œ„ ์•„๋žซ๋ฉด์˜ ์ˆซ์ž์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๋‹จ, 1๋ฒˆ ์ฃผ์‚ฌ์œ„๋Š” ๋งˆ์Œ๋Œ€๋กœ ๋†“์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์Œ“์•„ ๋†“์œผ๋ฉด ๊ธด ์‚ฌ๊ฐ ๊ธฐ๋‘ฅ์ด ๋œ๋‹ค. ์ด ์‚ฌ๊ฐ ๊ธฐ๋‘ฅ์—๋Š” 4๊ฐœ์˜ ๊ธด ์˜†๋ฉด์ด ์žˆ๋‹ค. ์ด 4๊ฐœ์˜ ์˜†๋ฉด ์ค‘์—์„œ ์–ด๋Š ํ•œ ๋ฉด์˜ ์ˆซ์ž์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ์ฃผ์‚ฌ์œ„๋ฅผ ์Œ“๊ณ ์ž ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๊ฐ ์ฃผ์‚ฌ์œ„๋ฅผ ์œ„ ์•„๋ž˜๋ฅผ ๊ณ ์ •ํ•œ ์ฑ„ ์˜†์œผ๋กœ 90๋„, 180๋„, ๋˜๋Š” 270๋„ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํ•œ ์˜†๋ฉด์˜ ์ˆซ์ž์˜ ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.


์ž…๋ ฅ

์ฒซ์ค„์—๋Š” ์ฃผ์‚ฌ์œ„์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ๋Š” ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์‚ฌ์œ„์˜ ์ข…๋ฅ˜๊ฐ€ 1๋ฒˆ ์ฃผ์‚ฌ์œ„๋ถ€ํ„ฐ ์ฃผ์‚ฌ์œ„ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅ๋œ๋‹ค. ์ฃผ์‚ฌ์œ„์˜ ์ข…๋ฅ˜๋Š” ๊ฐ ๋ฉด์— ์ ํ˜€์ง„ ์ˆซ์ž๊ฐ€ ๊ทธ๋ฆผ1์— ์žˆ๋Š” ์ฃผ์‚ฌ์œ„์˜ ์ „๊ฐœ๋„์—์„œ A, B, C, D, E, F ์˜ ์ˆœ์„œ๋กœ ์ž…๋ ฅ๋œ๋‹ค. ์ž…๋ ฅ๋˜๋Š” ์ˆซ์ž ์‚ฌ์ด์—๋Š” ๋นˆ ์นธ์ด ํ•˜๋‚˜์”ฉ ์žˆ๋‹ค. ์ฃผ์‚ฌ์œ„์˜ ๊ฐœ์ˆ˜๋Š” 10,000๊ฐœ ์ดํ•˜์ด๋ฉฐ ์ข…๋ฅ˜๊ฐ€ ๊ฐ™์€ ์ฃผ์‚ฌ์œ„๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆผ 1


์ถœ๋ ฅ

์ฒซ์ค„์— ํ•œ ์˜†๋ฉด์˜ ์ˆซ์ž์˜ ํ•ฉ์ด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ

์ž…๋ ฅ

5
2 3 1 6 5 4
3 1 2 4 6 5
5 6 4 1 3 2
1 3 6 2 4 5
4 1 6 5 2 3


์ถœ๋ ฅ

29


My Sol

import sys
sys.setrecursionlimit(100000)

def foo(depth, floor, ceil, ssum):
    if depth==N:
        global maxV
        maxV = max(maxV, ssum)
        return

    maxNow = max(set(range(1, 7)) - {floor, ceil})
    floor = ceil
    ceil = cubes[depth+1][floor]
    foo(depth+1, floor, ceil, ssum+maxNow)


N = int(input())
cubes = []
for _ in range(N):
    a, b, c, d, e, f = map(int, input().split())
    dict1 = {a:f, b:d, c:e, d:b, e:c, f:a}
    cubes.append(dict1)
cubes.append(dict1)

maxV = 0
for i in range(1, 7):
    foo(0, i, cubes[0][i], 0)
print(maxV)

๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ๋ฆฌ์ŠคํŠธ์— ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ณ , ์ด ๊ฐ๊ฐ์„ ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ์•„๋ž˜์™€ ์œ„์— ๋Œ€์กฐ๋˜๋Š” ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. ์ข…๋ฃŒ์กฐ๊ฑด๊นŒ์ง€ ๊ฐ€๊ธฐ ์ง์ „์— cubes์˜ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋„˜์–ด์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ floor, ceil์— ๊ฐ’์„ ์ง‘์–ด๋„ฃ๊ธฐ ๋•Œ๋ฌธ์— ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋กœ dict1์„ ํ•œ ๋ฒˆ ๋” cubes์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. ssum ๊ณ„์‚ฐ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ๋ฌด์—‡์„ ๋„ฃ์–ด๋„ ์ƒ๊ด€์ด ์—†๋‹ค. key๋งŒ 1๋ถ€ํ„ฐ 6๊นŒ์ง€๋งŒ ์žˆ์–ด์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค.

set์˜ ์ฐจ์ง‘ํ•ฉ์„ ์ด์šฉํ•˜์˜€๋‹ค. floor์™€ ceil์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ 4๊ฐœ ๋ฉด ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ssum์— ๋”ํ•ด์•ผํ•˜๋ฏ€๋กœ set์˜ ์ฐจ์ง‘ํ•ฉ์ด ์ตœ์ ์ด์—ˆ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!


๋ชจ๋ฒ”๋‹ต์•ˆ

์ถœ์ฒ˜

#least sum of contact face
import sys
read=sys.stdin.readline
n=int(read())
dices=[]
idx=(5,3,4,1,2,0)
for _ in range(n):
  vals=tuple(map(int,read().split()))
  res=[0]*7
  for v in vals:
    res[v]=vals[idx[vals.index(v)]]
  dices.append(res)
mx=0
for x in range(1,7):
  sm=0
  upperFace=x
  for i in range(n):
    bottomFace,upperFace=upperFace,dices[i][upperFace]
    for j in range(6,0,-1):
      if j!=bottomFace and j!=upperFace:
        sm+=j
        break
  mx=max(mx,sm)
print(mx)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ