(1, 5) 위치에서 시작하며 현재 북쪽을 바라보고 있습니다.
방향을 시계방향으로 90' 회전한 후,
앞으로 한 칸 이동한 이후의 위치를 구해보세요.
문제
x,y = 1, 5
# 동, 서, 남, 북
dx, dy = [1, -1, 0, 0], [0, 0, -1, 1]
dir_num = 3 # 현재 북쪽임
if dir_num == 0:
dir_num = 2
elif dir_num == 1:
dir_num = 3
elif dir_num == 2:
dir_num = 1
else:
dir_num = 0
nx, ny = x + dx[dir_num], y + dy[dir_num]
# 시계 순서대로 방향을 정의해보자
dir_num = 3
x, y = 1, 5
# 시계방향으로 90도니까 오른쪽부터
dx, dy = [1, 0, -1, 0], [0, -1, 0, 1]
# rotate direction
if dir_num == 0:
dir_num = 1
elif dir_num == 1:
dir_num = 2
elif dir_num == 2:
dir_num = 3
else:
dir_num = 0
# move
nx, ny = x + dx[dir_num], y + dy[dir_num]
# rotate direction
dir_num = (dir_num + 1) % 4
# move
nx, ny = x + dx[dir_num], y + dy[dir_num]
# 반시계 방향일 경우엔 dir_num -1
# 그러나 dir_num = 0 일 때 다시 3이 되어야 하므로
(dir_num + 3) % 4
# rotate direction
if dir_num == 0:
dir_num = 3
elif dir_num == 1:
dir_num = 0
elif dir_num == 2:
dir_num = 1
else:
dir_num = 2
dir_num = (dir_num - 1 + 4) % 4