문제 출처 : www.acmicpc.net/problem/9663
문제 해석 : 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
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 15652 N과 M (4) 문제 풀이 (0) | 2021.01.26 |
---|---|
[알고리즘][Python] 백준 15650 N과 M (2) 문제 풀이 (0) | 2021.01.26 |
[알고리즘][Python] 백준 9465 스티커 문제 풀이 (0) | 2021.01.25 |
[알고리즘][Python] 백준 5639 이진 검색 트리 문제 풀이 (0) | 2021.01.25 |
[알고리즘][Python] 백준 2638 치즈 문제 풀이 (0) | 2021.01.25 |