백준 9663 python

고장난 고양이·2022년 1월 18일
0

알고리즘_python

목록 보기
18/84

백준 9663

N-Queen

문제

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

입력

첫째 줄에 N이 주어진다. (1 ≤ N < 15)

출력

첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.

힌트

https://www.youtube.com/watch?v=t99KH0TR-J4&t=154s
이지랄 ㅋ

예시

8 -> 92

코드

n = int(input())

ans = 0
row = [0] * n


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

    return True


def n_queens(x):
    global ans
    if x == n:
        ans += 1

    else:
        for i in range(n):
            
            row[x] = i
            if find(x):
                n_queens(x + 1)


n_queens(0)
print(ans)

abs == 절대값 함수
한줄씩 밑에 대각선에 존재하는지 안하는지 판단해서 넘어가고넘어가고 하는형식인것같다

https://seongonion.tistory.com/103

참고

profile
개발새발X발일지

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN