반응형
def solve(n, location, column):
c = 0
if column == n:
return 1
for row in range(n):
if is_possible(n, location, column, row):
location.append((column, row))
c += solve(n, location, column + 1)
location.pop()
return c
def is_possible(n, location, column, row):
for loc in location:
if loc[0] == column:
return False
if loc[1] == row:
return False
for k in range(1, min(n - loc[0], n - loc[1])):
if column == loc[0] + k and row == loc[1] + k:
return False
for k in range(1, min(n - loc[0], loc[1] + 1)):
if column == loc[0] + k and row == loc[1] - k:
return False
return True
n = int(input())
answer = [0, 1, 0, 0, 2, 10, 4, 40, 92, 352, 724, 2680, 14200, 73712, 365596]
if n < len(answer):
print(answer[n])
else:
location = []
count = 0
for i in range(n):
location.append((0, i))
count += solve(n, location, 1)
location.pop()
print(count)
반응형
'Develop > 코딩인터뷰' 카테고리의 다른 글
[코딩인터뷰] 백준 14888번 (0) | 2021.03.19 |
---|---|
[코딩인터뷰] 백준 14889번 (0) | 2021.03.19 |
[코딩인터뷰] 백준 2661번 (0) | 2021.03.19 |
[코딩인터뷰] 트라이 자료 구조 Trie data structure (0) | 2021.03.09 |
[코딩인터뷰] 문제 8.5 (0) | 2020.04.04 |
꾸준히 노력하는 개발자 "김예건" 입니다.