[白俊14499号]サイコロを投げる
13442 ワード
https://www.acmicpc.net/problem/14499
1.コード
任意の初期値をd[i]=iの順に入力します.(値が反対側として識別可能な値の場合、i以外の値を追加できます)
東にスクロールすると、既存のd[3=左側]に対応する値がd[1=上]であると判断できます.
->東へスクロールするときにd[1]=d[3]を実行する
繰り返し
1.コード import sys
ans = []
n, m, x, y, c = map(int, sys.stdin.readline().rstrip().split())
graph = []
for i in range(n):
graph.append(list(map(int, sys.stdin.readline().rstrip().split())))
commands = list(map(int, sys.stdin.readline().rstrip().split()))[:]
d = [0] * 7
dx = [0, 0, 0, -1, 1] # 동쪽[1], 서쪽[2], 북쪽[3], 남쪽[4]
dy = [0, 1, -1, 0, 0]
for i in range(c):
for j in range(1, 5):
if commands[i] == j:
nx = x + dx[j]
ny = y + dy[j]
if 0 <= nx < n and 0 <= ny < m:
t1, t2 = d[1], d[2]
t3, t4 = d[3], d[4]
t5, t6 = d[5], d[6]
if j == 1:
d[1], d[2] = t3, t4
d[3], d[4] = t2, t1
elif j == 2:
d[1], d[2] = t4, t3
d[3], d[4] = t1, t2
elif j == 3:
d[1], d[2] = t5, t6
d[5], d[6] = t2, t1
elif j == 4:
d[1], d[2] = t6, t5
d[5], d[6] = t1, t2
if graph[nx][ny] == 0:
graph[nx][ny] = d[2]
else:
d[2] = graph[nx][ny]
graph[nx][ny] = 0
ans.append(d[1])
x, y = nx, ny
for i in ans:
print(i)
2.後期 # 각 인덱스는 항상 한글로 적힌 면을 나타낸다.
d[1=윗면], d[2=아랫면], d[3=왼쪽면], d[4=오른쪽면], d[5=앞면], d[6=뒷면]
ルールを探すときは、以下のように絵を描いてルールを探します.
import sys
ans = []
n, m, x, y, c = map(int, sys.stdin.readline().rstrip().split())
graph = []
for i in range(n):
graph.append(list(map(int, sys.stdin.readline().rstrip().split())))
commands = list(map(int, sys.stdin.readline().rstrip().split()))[:]
d = [0] * 7
dx = [0, 0, 0, -1, 1] # 동쪽[1], 서쪽[2], 북쪽[3], 남쪽[4]
dy = [0, 1, -1, 0, 0]
for i in range(c):
for j in range(1, 5):
if commands[i] == j:
nx = x + dx[j]
ny = y + dy[j]
if 0 <= nx < n and 0 <= ny < m:
t1, t2 = d[1], d[2]
t3, t4 = d[3], d[4]
t5, t6 = d[5], d[6]
if j == 1:
d[1], d[2] = t3, t4
d[3], d[4] = t2, t1
elif j == 2:
d[1], d[2] = t4, t3
d[3], d[4] = t1, t2
elif j == 3:
d[1], d[2] = t5, t6
d[5], d[6] = t2, t1
elif j == 4:
d[1], d[2] = t6, t5
d[5], d[6] = t1, t2
if graph[nx][ny] == 0:
graph[nx][ny] = d[2]
else:
d[2] = graph[nx][ny]
graph[nx][ny] = 0
ans.append(d[1])
x, y = nx, ny
for i in ans:
print(i)
# 각 인덱스는 항상 한글로 적힌 면을 나타낸다.
d[1=윗면], d[2=아랫면], d[3=왼쪽면], d[4=오른쪽면], d[5=앞면], d[6=뒷면]
ルールを探すときは、以下のように絵を描いてルールを探します.任意の初期値をd[i]=iの順に入力します.(値が反対側として識別可能な値の場合、i以外の値を追加できます)
東にスクロールすると、既存のd[3=左側]に対応する値がd[1=上]であると判断できます.
->東へスクロールするときにd[1]=d[3]を実行する
繰り返し
Reference
この問題について([白俊14499号]サイコロを投げる), 我々は、より多くの情報をここで見つけました https://velog.io/@legowww/백준-14499번-주사위-굴리기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol