백준 9663

김가람·2023년 4월 12일
0

1. 문제

9663번

2. 풀이

answer = 0
n = int(input())
board = [-1 for _ in range(n)]

def promising(row):
    for i in range(row):
        if board[row] == board[i] or \
        abs(row - i) == abs(board[row] - board[i]):
            return False
    return True
    
def dfs(row):
    global answer
    if row == n: # n번째 행까지 n개의 퀸을 놓았는가?
        answer += 1 # 갯수 업데이트
        return # 다음 열로 이동 ~ 1차원으로 단순화하기 때문에 열은 명시하지 않는다.
    
    # n번째 행이 아닐 때
    for col in range(n):
        board[row] = col
        
        if promising(row):
            dfs(row + 1)
    
dfs(0)
print(answer)
profile
부캐:데이터 사이언티스트가 되고 싶은 반도체 공장 노예

0개의 댓글