티스토리 뷰
문제
https://www.acmicpc.net/problem/14499
풀이
그대로 구현만 하면 되는 문제였음.
dice라는 배열을 이용했는데, [위, 앞, 오, 왼, 뒤, 아]라고 정하고 풀었음.
rollDice라는 메서드를 이용해 dice배열의 순서를 바꿔주었음. 이때, 파라미터로 x와 y도 같이 받아서 범위를 벗어나면 건너뛰게 하였음.
check라는 변수를 이용하여 이때 값을 True로 바꾸어 커맨드를 건너뛸 수 있게했음.
윗면이 0번째 인덱스이므로 dice[0]을 매번 출력해주었음.
import sys
input = sys.stdin.readline
n,m,x,y,k = map(int,input().split())
board = []
for _ in range(n):
board.append(list(map(int,input().split())))
dice = [0 for _ in range(6)]
def rollDice(dir,cur):
global dice, x, y, check
if dir == 1:
if y + 1 == m:
check = True
return
y += 1
dice = [cur[3],cur[1],cur[0],cur[5],cur[4],cur[2]]
elif dir == 2:
if y == 0:
check = True
return
y -= 1
dice = [cur[2], cur[1], cur[5], cur[0], cur[4], cur[3]]
elif dir == 3:
if x == 0:
check = True
return
x -= 1
dice = [cur[4], cur[0], cur[2], cur[3], cur[5], cur[1]]
else:
if x + 1 == n:
check = True
return
x += 1
dice = [cur[1], cur[5], cur[2], cur[3], cur[0], cur[4]]
def changeNum(x,y):
global board, dice
if board[x][y] == 0:
board[x][y] = dice[5]
else:
dice[5] = board[x][y]
board[x][y] = 0
changeNum(x,y)
command = list(map(int,input().split()))
for i in range(len(command)):
check = False
rollDice(command[i],dice)
if check:
continue
else:
changeNum(x,y)
print(dice[0])
처음에는 rollDice 메서드에서 dice의 값을 각각 넣어줬었음.
dice[0] = cur[2]; dice[1] = cur[1]...이런식으로 적어줬음.
근데 이렇게 하니까 파라미터로 받은 cur의 값이 dice의 값이 바뀌니까 같이 바뀌는거임. swift처럼 상수취급 되는게 아닌듯함.
_____________________________________________________________________________________________________
골드5가 더 어려운느낌
'PS' 카테고리의 다른 글
[Python] 백준_사다리조작(15684) (0) | 2023.03.18 |
---|---|
[Python] 백준_마법사 상어와 파이어볼(20056) (0) | 2023.03.17 |
[Python] 백준_테트로미노(14500) (0) | 2023.03.16 |
[Python] 백준_상어 초등학교(21608) (0) | 2023.03.16 |
[Python] 백준_마법사 상어와 비바라기(21610) (0) | 2023.03.16 |
댓글
최근에 올라온 글
- Total
- Today
- Yesterday