N(col, row 길이), r(row), c(col)를 띄어쓰기를 기준으로 입력
(r, c) 위치를 방문하는 순서를 출력
(r, c)가 위치한 사분면을 파악하여 크기가 4인 사각형 안에 해당 좌표가 위치하는 곳을 파악
사각형을 분할하며 ans에 index값을 추가
1 사분면 -> ans+0
2 사분면 -> ans+1개의 쿼터 사이즈 index 값
3 사분면 -> ans+2개의 쿼터 사이즈 index 값
4 사분면 -> ans+3개의 쿼터 사이즈 index 값
def check(half, r, c):
quat = (2**(N*2))//4
if r>=half and c>=half:
r -= half
c -= half
ans_tmp = quat*3
elif r>=half and c<half:
r -= half
ans_tmp = quat*2
elif r<half and c>=half:
c -= half
ans_tmp = quat
else: ans_tmp = 0
return r, c, ans_tmp
while 1:
r, c, ans_tmp = check(half, r, c)
ans += ans_tmp
N -= 1
half = 2**(N-1)
if half < 2:
half += 1
break
dx = [0, 1, -1, 1]
dy = [0, 0, 1, 0]
y, x = 0, 0
for idx in range(4):
y += dy[idx]
x += dx[idx]
if y == r and x == c: break
else: ans += 1