[백준]-N-Queen

이정연·2022년 10월 14일
0

CodingTest

목록 보기
5/165

👋🏻 인트로

1년 전부터 내 머리를 아프게 하였던 문제 ...
파이썬으로 풀면 시간 초과를 피하기 힘들다. 파이파이로 제출하자

👨🏻‍💻 코드

import sys
input = sys.stdin.readline

# 퀸을 놓을 수 있는지 체크
def check(r):
    # 세로 체크
    for i in range(r):
        if row[r] == row[i]:
            return False
        # 대각 체크
        if abs(row[r]-row[i]) == abs(r-i):
            return False
    return True
# DFS
def dfs(start):
    global answer
    # 행이 마지막 행이면 모든 퀸을 놓을 수 있으므로 개수 추가
    if start == n:
        answer += 1
    else:
        for i in range(n):
            row[start] = i
            if check(start):
                dfs(start+1)

n = int(input())
answer = 0
row = [0]*n
dfs(0)
print(answer)
profile
0x68656C6C6F21

0개의 댓글