[백준/파이썬] 9663번 풀이

업데이트:



문제 정보


풀이

문제

백준 9663번 문제를 풀이합니다.

코드

`python n = int(input()) answer = 0

def bt(n, i, placable): print(‘================’) print(i) for row in placable: print(row) print(‘================’) if i >= n*n: return 1

tmp = []
if placable[i // n][i % n]:
    global answer
    answer += 1
    
    for row in placable: tmp.append(row.copy())
    for j in range(n): tmp[i // n][j] = tmp[j][i % n] = False
    j = 1
    while 0 <= i // n - j < n and 0 <= i % n - j < n:
        tmp[i // n - j][i % n - j] = False
        j += 1
    j = 1
    while 0 <= i // n + j < n and 0 <= i % n - j < n:
        tmp[i // n + j][i % n - j] = False
        j += 1
    j = 1
    while 0 <= i // n - j < n and 0 <= i % n + j < n:
        tmp[i // n - j][i % n + j] = False
        j += 1
    j = 1
    while 0 <= i // n + j < n and 0 <= i % n + j < n:
        tmp[i // n + j][i % n + j] = False
        j += 1
    
i += 1
while i < n*n and not placable[i // n][i % n]: i += 1
if not tmp:  bt(n, i, tmp)
bt(n, i, placable)

bt(n, 0, [[True] * n for _ in range(n)]) print(answer)

```

설명

저장소의 기존 제출 코드를 기준으로 정리한 풀이입니다.



댓글남기기