주사위를 굴리는데, 벗어나려고 하면 동작하면 안됨
벗어나려고 하지 않는 조건일 경우에만 굴리어 네 방향 (동, 서, 남, 북)에 따른 주사위의 값을 변경한다.
아래의 소스같은 경우는 벗어나지 않는 경우를 네 방향의 연산을 할 때와 네 방향중 어디라도 이동이 가능해서 굴렸다면 지도의 칸과의 비교과정 그리고 출력이 가능하도록 하였다.(chk 변수)
|
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
m = [0, 0, 0, 0, 0, 0] # 0 top, 1 left, 2 right, 3 front, 4 back, 5 bottom
def solve(n):
global r #r과 c는 글로벌 변수로 리스트의 경우는 글로벌 처리 안해도되는 것으로 생각함.
global c
mm = m.copy()
chk = 0
if n == 1: # 동
if -1 < (c+1) < M:
c += 1
m[0] = mm[1]
m[1] = mm[5]
m[5] = mm[2]
m[2] = mm[0]
chk = 1
elif n == 2: # 서
if -1 < (c-1) < M:
c -= 1
m[0] = mm[2]
m[1] = mm[0]
m[5] = mm[1]
m[2] = mm[5]
chk = 1
elif n == 3: # 남
if -1 < (r-1) < N:
r -= 1
m[4] = mm[0]
m[0] = mm[3]
m[3] = mm[5]
m[5] = mm[4]
chk = 1
elif n == 4: # 북
if -1 < (r+1) < N:
r += 1
m[3] = mm[0]
m[4] = mm[5]
m[0] = mm[4]
m[5] = mm[3]
chk = 1
if chk == 1:
if mapp[r][c] == 0:
mapp[r][c] = m[5]
else:
m[5] = mapp[r][c]
mapp[r][c] = 0
print(m[0])
N, M, x, y ,k = map(int, input().split())
mapp = []
r=x
c=y
for i in range(N):
a = list(map(int, input().split()))
ks = list(map(int, input().strip().split()))
for i in range(k):
solve(ks[i])
|
|
'Algorithm > SW 역량테스트 기출' 카테고리의 다른 글
| [백준] 치킨배달 15686 (브루트포스) Python (0) | 2019.10.20 |
|---|---|
| [백준] 시험감독 13458(구현) (0) | 2019.10.19 |