Written by
최태열
on
on
[Python][프로그래머스][Level3] N-Queen
[Python][프로그래머스][Level3] N-Queen
코드
answer=0
def queen(num,board):
global answer
if num==len(board):
answer+=1
return
for x in range(1,len(board)+1):
if x in board[:num]:
continue
for i in range(1,num+1):
if abs(x-board[num-i])==i:
break
else:
board[num]=x
queen(num+1,board)
board[num]=0
def solution(n):
queen(0,[0]*n)
return answer
DFS로 유명한 N queen 문제다.
체스판의 길이 n과 동일한 길이의 배열을 선언한다.
이 배열은 queen의 위치번호를 저장할 배열이다.
알맞은 위치일 경우는
-
동일한 위치 번호를 가진 퀸이 없어야 한다.
-
위치 번호가 배열의 index 의 차이와 동일한 경우가 없어야 한다. (대각선)
따라서 각 배열에 모든 번호를 넣으면서 알맞은 경우만 답에 추가한다.
Discussion and feedback