https://www.acmicpc.net/problem/5373
내 풀이:
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
31
32
33
34
35
36
|
def rotate(c):
T, X, Y, Z, W = U, L, F, R, B
if c == 'L':
T, X, Y, Z, W = L, F, U, B, D
if c == 'F':
T, X, Y, Z, W = F, U, L, D, R
if c == 'R':
T, X, Y, Z, W = R, D, B, U, F
if c == 'B':
T, X, Y, Z, W = B, R, D, L, U
if c == 'D':
T, X, Y, Z, W = D, B, R, F, L
T[0][2], T[1][2], T[2][2], T[2][1], T[2][0], T[1][0], T[0][0], T[0][1] = T[0][0], T[0][1], T[0][2], T[1][2], \
T[2][2], T[2][1], T[2][0], T[1][0]
X[2][2], X[2][1], X[2][0], Y[2][0], Y[1][0], Y[0][0], Z[0][2], Z[1][2], Z[2][2], W[0][0], W[0][1], W[0][2] = \
Y[2][0], Y[1][0], Y[0][0], Z[0][2], Z[1][2], Z[2][2], W[0][0], W[0][1], W[0][2], X[2][2], X[2][1], X[2][0]
for _ in range(int(input())):
U = [['w'] * 3 for _ in range(3)]
D = [['y'] * 3 for _ in range(3)]
F = [['r'] * 3 for _ in range(3)]
B = [['o'] * 3 for _ in range(3)]
L = [['g'] * 3 for _ in range(3)]
R = [['b'] * 3 for _ in range(3)]
n = int(input())
data = list(input().split())
for area, dir in data:
rotate(area)
if dir == '-':
rotate(area)
rotate(area)
for i in range(3):
print("".join(j for j in U[i]))
|
Python3, 272ms
이 문제를 짧은 코드로 작성해서 풀기 위해서는 큐브의 겨냥도를 그릴 때 우리가 보기 편한 방식이 아닌 모든 면이 순환하는 형태로 두고 코드를 짜야 한다.
파이썬으로 풀어보는 백준 17825번: 주사위 윷놀이 (삼성 SW 역량 테스트 기출 문제) (3) | 2020.04.03 |
---|---|
파이썬으로 풀어보는 백준 17472번: 다리 만들기 2 (삼성 A형 기출 문제) (0) | 2020.04.03 |
SW Expert Academy 특이한 자석 (0) | 2020.02.18 |
SWEA [모의 SW 역량테스트] 벽돌 깨기 (0) | 2020.02.18 |
파이썬으로 풀어보는 백준 17837번: 새로운 게임 2 (삼성 A형 기출 문제) (0) | 2020.02.16 |
댓글 영역