계속지나가기
코딩스뮤
계속지나가기
전체 방문자
오늘
어제
  • 코딩스뮤:)
    • Algorithm
      • 백준 문제풀이
      • 프로그래머스 문제풀이
      • 알고리즘 이론
      • 자료구조
      • SW Expert Academy
    • 인공지능(AI)
      • LLMs
      • 자연어처리(NLP)
      • 컴퓨터비전(CV)
      • 딥러닝(DL)
      • 머신러닝(ML)
      • 인공지능기초수학
      • 선형대수학
    • 컴퓨터 세팅
    • Computer Science
      • 유닉스프로그래밍
      • 프로그래밍언어론
      • 디자인패턴
      • 클린코드
      • SW 영어
      • 리눅스
      • 논리회로
    • Server
      • Docker

블로그 메뉴

  • 홈
  • Who Am I(CV)
  • 태그

공지사항

인기 글

태그

  • 최대유량
  • networkflow
  • SIFT
  • 손실함수
  • f1-score
  • 컴퓨터비전
  • 경사하강법
  • 네트워크플로우
  • MaximumFlow
  • 파이썬 클린코드
  • 선형회귀
  • machinelearning
  • 군집화
  • DIP
  • 비지도학습
  • LM
  • 패턴인식
  • 머신러닝
  • ComputerVision
  • 비용함수
  • NLP
  • 지도학습
  • 디지털이미지처리
  • DigitalImageProcessing
  • ML
  • 결정경계
  • 언어모델
  • 에지검출
  • 기계학습
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
계속지나가기

코딩스뮤

[Python] BOJ 9663. N-Queen
Algorithm/백준 문제풀이

[Python] BOJ 9663. N-Queen

2022. 3. 20. 00:07
반응형

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

 

9663번: N-Queen

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

www.acmicpc.net

NxN 체스판에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력하는 문제로 N=4일때를 예시로 들면 다음과 같이 설명할 수 있다

 

4x4 체스판에 퀸 4개가 아래와 같이 있다

 

상태 공간 트리(State-Space Tree)로 1~4번 퀸의 위치를 표현할 수 있다

 

아래는 4개의 퀸들이 서로 공격할 수 없게 놓은 경우의 수 중 하나로, 상태 공간 트리로 표현했을 때는 다음과 같은 경로를 거치게 된다

- 퀸은 현재 위치에서 상하좌우의 직선방향, 대각선 방향으로 움직일 수 있음

코드는 다음과 같다

def is_Possible(x): 
    global board
    for i in range(x): 
    	# 직선방향 검사 or 대각선 방향 검사
        if board[x] == board[i] or abs(board[i]-board[x]) == x-i:
            return False
    return True

def dfs(x):
    global ans, N, board
    if x == N:
        ans += 1
        return
    for i in range(N):
        board[x] = i
        if is_Possible(x):
            dfs(x+1)

N = int(input())
ans = 0
board = [0] * (N)
dfs(0)
print(ans)
반응형

'Algorithm > 백준 문제풀이' 카테고리의 다른 글

[백준] 12865번: 평범한 배낭 - 파이썬(Python)  (0) 2024.06.10
[Python] BOJ 1300. k번째 수  (0) 2021.01.31
[C++] BOJ 1051. 숫자 정사각형  (0) 2020.09.30
[C++] BOJ 4386. 별자리 만들기  (0) 2020.09.23
[C++] BOJ 7576. 토마토  (0) 2020.09.16
    'Algorithm/백준 문제풀이' 카테고리의 다른 글
    • [백준] 12865번: 평범한 배낭 - 파이썬(Python)
    • [Python] BOJ 1300. k번째 수
    • [C++] BOJ 1051. 숫자 정사각형
    • [C++] BOJ 4386. 별자리 만들기
    계속지나가기
    계속지나가기
    NLP Engineer

    티스토리툴바