백준 9663 N-Queen

gmlwlswldbs·2022년 2월 26일
0
n = int(input())

cnt = 0

def select(x, l, y_used):
    global cnt
    if len(l) == n:
        cnt += 1
        return
    for ny in range(n):
        if ny not in y_used:
            flag = 0
            for (u, v) in l:
                if abs(v-ny) == abs(u-x-1):
                    flag = 1
            if flag == 0:
            	# 모든 x와 y가 한번씩 등장
                select(x+1, l+[(x+1, ny)], y_used+[ny])
for y in range(n):
    select(0, [(0, y)], [y])
print(cnt)

모든 방향, 모든 좌표 탐색 -> 대각선 방향만 탐색 -> 절댓값으로 계산 으로 바꿈

0개의 댓글