[백준] #9663 N-Queen python

2023. 1. 11. 10:25

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

 

9663번: N-Queen

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

www.acmicpc.net

 

📕 설명 📕

 

2차원 배열을 1차원 배열의 인덱스로 표현하였다.

 

(x, y) => row[x] = y와 같이 말이다.

 

1. row 배열 내에 같은 값의 유무 확인.

 

2. 대각선의 값들을 고려하여 대각선의 위치한 Queen의 자리를 확인한다.

 

 

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

N = int(input())

result = 0
r = [0] * N

def is_OK(num):
    for i in range(num):
        if r[num] == r[i] or abs(r[num] - r[i]) == abs(num - i):
            return False
    return True

def N_QUEEN(num):
    global result
    if num == N:
        result += 1
        return
    else:
        for i in range(N):
            r[num] = i
            if is_OK(num):
                N_QUEEN(num + 1)
N_QUEEN(0)
print(result)

 

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

[백준] #2559 수열 python  (0) 2023.01.13
[백준] #11659 구간 합 구하기 4  (0) 2023.01.12
[백준] #15652 N과 M (4) python  (1) 2023.01.10
[백준] #7576 토마토 python  (0) 2023.01.09
[백준] #15651 N과 M (3) python  (0) 2023.01.08

BELATED ARTICLES

more