https://www.acmicpc.net/problem/9663
문제
정답 풀이
n = int(input())
count = 0
pos = [0] * n
flag_a = [False] * n
flag_b = [False] * (n + (n-1))
flag_c = [False] * (n + (n-1))
def set(i: int) -> None:
global count
for j in range(n):
if(not flag_a[j] and not flag_b[i+j] and not flag_c[i-j+(n-1)]):
pos[j] = j
if i == (n-1):
count += 1
else:
flag_a[j] = flag_b[i+j] = flag_c[i-j+(n-1)] = True
set(i+1)
flag_a[j] = flag_b[i+j] = flag_c[i-j+(n-1)] = False
set(0)
print(count)
출처:
해석
'sw사관학교 정글 2기 > 01 기초,재귀,완전탐색, 정렬' 카테고리의 다른 글
[dfs] ★★★백준 2468번 안전 영역 with Python3 (0) | 2021.08.11 |
---|---|
[완전탐색] 백준 외판원 순회 2 10971번 with Python3★★★ (0) | 2021.08.10 |
[정렬] 백준 1181번 단어 정렬 with Python3 (0) | 2021.08.10 |
[정렬]★★ 백준 수의 정렬 1,2,3 with Python3 (0) | 2021.08.10 |
[완전탐색] 백준 10819번 차이를 최대로 with Python3 (0) | 2021.08.10 |
댓글