주사위굴리기_14499번

14499번 문제 풀이


주사위가 좌표면을 움직일때마다 윗면에 쓰여있는 숫자를 출력하는 문제이다.

1.규칙에 따라 주사위와 좌표면의 숫자들이 바뀌므로 바뀌는 주사위 면의 숫자들을 저장하고자 했다.

   따라서, 아래와 같이 dice라는 리스트를 주사위값 저장에 사용했다.

1
dice = [0,0,0,0,0,0] #위0 아래1 동2 서3 남4 북5 순서로 값

2.주사위가 움직이는 지도가 어떻게 생겼는지를 알아야했다.

   따라서, 아래와 같이 입력받은 크기에 맞는 지도를 생성했다.

1
2
3
4
5
field = []

for row in range(rows):
li = list(map(int, input().split()))
field.append(li)

3.주어지는 움직임대로 주사위를 움직이고 그에따라 지도의 값과 dice의 값을 바꿔주어야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for i in range(len(moves)):
temp = 0
if moves[i] == 1:
if position_y + 1 < columns:
position_y += 1
temp = dice[2]
field_num = field[position_x][position_y]
if field_num == 0:
dice[2] = dice[0]
dice[0] = dice[3]
dice[3] = dice[1]
dice[1] = temp
field[position_x][position_y] = temp

else:
dice[2] = dice[0]
dice[0] = dice[3]
dice[3] = dice[1]
dice[1] = field[position_x][position_y]
field[position_x][position_y] = 0
else : continue

주사위가 특정 방향으로 움직이기전에, temp값에 바닥을 향할 주사위 값을 미리 저장해주었다.

그리고 주사위가 움직일때, 현재 좌표값들을 변경시켜준다.

이때 주의할점은 우리는 문제에서 값을 입력받을때 세로크기를 먼저받고 그 다음으로 가로 크기를 받는다는 점이다.

즉 동쪽으로 움직이면 y좌표가 늘어난다.

주사위가 굴렀다면, dice 리스트에 값들을 바꿔줘야한다.

위와같이 동쪽으로 굴렀다면, 위를 바라보던 주사위 면은 동쪽을 바라보게 될테고

서쪽을 바라보던 주사위면은 위를 바라보게 될 것이다.

이와 같이 주사위 면의 값들을 dice에 바꿔서 입력한다.

이 과정을 동,서,남,북에 나눠서 처리하고 그때마다 주사위 윗면의 값을 프린트해주면 된다.

Full Code

Full Code

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×