📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 9663 N-Queen 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/9663

 

9663번: N-Queen

N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net


문제 해석 : NxN 보드에서 N개의 퀀이 서로 공격하지 못하게 배치하는 방법의 수를 출력하는 문제이다.

 

문제 풀이 : 백트래킹 방법을 이용해서 가능할 수 있는 경우에만 연산을 진행한다.


풀이 코드

def is_possible(end):
    for i in range(1, end):
        if answer[end] == answer[i] or abs(answer[end]-answer[i]) == abs(end - i):
            return False
    return True

def solution(check):
    global count

    if check > N:
        count += 1

    else:
        for i in range(1, N+1):
            answer[check] = i
            if is_possible(check):
                solution(check + 1)

if __name__=="__main__":
    N = int(input())
    count = 0
    answer = [0 for _ in range(N+1)]

    solution(1)
    print(count)

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.