방향회전 dx, dy 정의

sea·2023년 9월 23일
0

알고리즘

목록 보기
4/14

(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
profile
달려가는중

0개의 댓글