[BOJ] 9663 N-Queen

이강혁·2025년 2월 3일
0

백준

목록 보기
52/60

https://www.acmicpc.net/problem/9663

n-queen 문제이다.
DFS로 접근해서 위 행에서부터 퀸을 배치해 나가면서, check라는 함수를 통해서 가로 세로, 대각선에 놓을 수 있는지 판단했다.

Python

n = int(input())

def check(x):
  
  for i in range(x):
    if row[x] == row[i]:
      return False
    if abs(row[x] - row[i]) == x - i:
      return False
  return True

def dfs(x):
  global result
  if x == n:
    result += 1
  else:
    for i in range(n):
      row[x] = i
      if check(x):
        dfs(x + 1)

row = [0] * n
result = 0
dfs(0)

print(result)
profile
사용자불량

0개의 댓글