본문 바로가기

Algorithm/SW 역량테스트 기출

[백준] 주사위 굴리기 14499 (시뮬레이션) Python

주사위를 굴리는데, 벗어나려고 하면 동작하면 안됨

벗어나려고 하지 않는 조건일 경우에만 굴리어 네 방향 (동, 서, 남, 북)에 따른 주사위의 값을 변경한다.

 

아래의 소스같은 경우는 벗어나지 않는 경우를 네 방향의 연산을 할 때와 네 방향중 어디라도 이동이 가능해서 굴렸다면 지도의 칸과의 비교과정 그리고 출력이 가능하도록 하였다.(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
= [000000# 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])