완전탐색 (백트래킹)
모든 경우의 수를 탐색하다 만약 조건에 맞지 않으면 그 즉시 중단하고 이전으로 돌아가여 다시 확인하는 것을 반복하면서 원하는 조건을 찾는 알고리즘


풀어볼 문제
Last updated
모든 경우의 수를 탐색하다 만약 조건에 맞지 않으면 그 즉시 중단하고 이전으로 돌아가여 다시 확인하는 것을 반복하면서 원하는 조건을 찾는 알고리즘


Last updated
n = int(input())
ans = 0
row = [0] * n
def is_promising(x):
for i in range(x):
if row[x] == row[i] or abs(row[x] - row[i]) == abs(x - i):
#+나 X 형태의 경우는 갈 수 없다. 가지치기
return False
return True
def n_queens(x):
global ans
if x == n:
ans += 1
return
else:
for i in range(n):
# [x, i]에 퀸을 놓겠다.
row[x] = i
if is_promising(x):
n_queens(x+1)
n_queens(0)
print(ans)def go(arr):
if len(arr) == m:
print(' '.join(map(str,arr)))
return
for i in range(n):
if len(arr)==0 or List[i] not in arr:
arr.append(List[i])
go(arr)
arr.pop()
n, m = map(int,input().split())
List=list(map(int, input().split()))
List.sort()
go([])