반응형
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
🐍파이썬
T = int(input())
for test_case in range(1, T + 1):
n = int(input())
board = [0] * n
answer = 0
def dfs(x):
global answer
if x == n: #n행의 depth까지 들어갔다면
answer += 1 #퀸 놓는 경우의 수+1
return
for i in range(n): #n행 반복
board[x] = i #x행, i열에 퀸 놓기
for j in range(x):
#해당 위치에 퀸을 놓을 수 있는지 없는지 확인
#동일한 열에 있거나 or 대각선상에 있을 때 퀸 놓기 불가
if board[x] == board[j] or abs(board[x]-board[j]) == abs(x-j):
break
#break문 실행이 되지 않았을 때 -> 퀸을 놓을 수 있다.
else:
dfs(x+1) #다음 재귀 실행해서 새로운 퀸 놓기
dfs(0)
print("#{} {}".format(test_case, answer))
N-Queen은 대표적인 백트래킹 문제이다.
아직 이해가지 않는 부분은 더 공부하고 반복해서 익히도록 하자.
참고한 블로그
https://seongonion.tistory.com/103
[백준] 9663번 N-Queen - 파이썬(Python)
문제 (링크) https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로
seongonion.tistory.com
👆 자세한 코드 설명을 확인할 수 있다.
https://jehwanyoo.net/2022/01/26/n-queen-%EB%AC%B8%EC%A0%9C-%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9/
N-Queen 문제 (백트래킹)
문제https://programmers.co.kr/learn/courses/30/lessons/12952 알고리즘 유도체스판은 2차원 배열로 되어있다. 퀸들끼리 서로 간섭하지 않고 총 N개의 말을 체스판에 놓아야한다. 1줄부터 N줄까지 차례대로 퀸
jehwanyoo.net
반응형
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA|파이썬] 1209. [S/W 문제해결 기본] 2일차 - Sum (D3) (0) | 2023.05.09 |
---|---|
[SWEA|파이썬] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (D3) (0) | 2023.05.08 |
[SWEA|파이썬] 2805. 농작물 수확하기 (D3) (0) | 2023.05.08 |
[SWEA|파이썬] 1208. [S/W 문제해결 기본] 1일차 - Flatten (D3) (0) | 2023.05.07 |
[SWEA|파이썬] 1244. [S/W 문제해결 응용] 2일차 - 최대 상금 (D3) (0) | 2023.05.07 |
[SWEA|파이썬] 1206. [S/W 문제해결 기본] 1일차 - View (D3) (0) | 2023.05.06 |