N, M = 10, 8 #그래프 크기
x, y = (0, 2) #현재 위치

d = [(0, 1), (1, 0), (0, -1), (-1, 0)] #시계방향으로 돌 경우 이 방향을 순환하게 된다
for i, (dx, dy) in enumerate(d):
  nx, ny = x + dx, y + dy
  if 0 <= nx < N and 0 <= ny < M: continue
  break # i is the direction we can't go

i = (i+1) % 4 #다음 방향; 시계방향으로 돌 경우 선택해야 하는 방향의 index
while True :
  dx, dy = d[i] #시계방향으로 돌 경우 선택해야 하는 방향의 index
  nx, ny = x + dx, y + dy
  if not (0 <= nx < N and 0 <= ny < M) : #바라본 방향이 그래프 바깥이면
    i = (i+1) % 4 #회전. 즉 다음 방향 선택
    dx, dy = d[i]
 
  x, y = x + dx, y + dy
  print(x, y)


설명한게 이거 말한게 맞는지 모르겠는데 나같으면 이렇게 구현 함