int n: 보드의 가로 , 세로 길이
int k: 보드의 장애물의 개수
int r_q: 보드 내 퀸의 행의 위치
int c_q: 보드 내 퀸의 열의 위치
int obstacles[k][2]: 장애물의 위치를 담은 2차원 배열, 각 원소에는 [행,열] 로 존재함.
int: 퀸이 공격할 수 있는 칸의 개수
퀸이 움직일 수 있는 방향은 상,하,좌,우,우상,우하,좌상,좌하 총 8개이다.
따라서 각 방향에 따라 퀸의 위치가 보드 밖을 나가지 않거나 장애물의 위치에 걸리지 않으면 결과값을 1씩 더한다.
if n==0:
return 0
obstacles =set([tuple(item) for item in obstacles])
move_q=[(1,0),(-1,0),(0,1),(0,-1),(1,1),(-1,-1),(1,-1),(-1,1)]
count=0
for u,v in move_q:
cur=(r_q+u,c_q+v)
while 1<=cur[0]<=n and 1<=cur[1]<=n and cur not in obstacles:
cur=(cur[0]+u,cur[1]+v)
count+=1
return count