입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
접근법
하나의 배열 col을 생성한 뒤, 하나씩 채워갑니다. col[0]은 0번째에 Q가 있는 인덱스, col[1]은 1번째에 Q가 있는 인덱스를 뜻합니다. nqueen부분에서는 col의 n번째에 각각 인덱스를 하나씩 채워주는 역할을 합니다. 이때 check에서 검사를 한 뒤, 그 자리에 올수 있다면 n+1자리를 검색해 봅니다. 이렇게 계속 하다보면, col의 길이와 n이 같아지는 시점에 count를 더해주면 됩니다.(n이 col의 길이만큼 왔다는 것은, check를 모두 통과했기 때문입니다.)
나의 코드
count = 0
def check(col,n):
for i in range(n):
if (col[n] in col[:n]) or (abs(col[n]-col[i]) == abs(n-i)): return False
return True
def nqueen(col,n):
global count
if len(col) == n:
count += 1
else:
for i in range(len(col)):
col[n] = i
if check(col,n):
nqueen(col,n+1)
def solution(n):
col = [0]*n
nqueen(col,0)
return count