S E P H ' S

[Python] N-Queen 본문

Algorithm/Programmers

[Python] N-Queen

yoseph0310 2021. 9. 4. 17:10
 

코딩테스트 연습 - N-Queen

가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은

programmers.co.kr

def dfs(queen, row, n):
    cnt = 0
    if n == row:
        return 1
    
    for col in range(n):
        queen[row] = col
        
        for r in range(row):
            if queen[r] == queen[row]:
                break
            if abs(queen[r] - queen[row]) == row - r:
                break
        else:
            cnt += dfs(queen, row+1, n)
            
    return cnt

def solution(n):
    return dfs([0]*n, 0, n)

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 최고의 집합  (0) 2021.09.05
[Python] 하노이의 탑  (0) 2021.09.04
[Python] 주식가격  (0) 2021.09.04
[Python] 구명보트  (0) 2021.09.01
[Python] 캐시  (0) 2021.08.31