https://programmers.co.kr/learn/courses/30/lessons/12952
다른 풀이를 참고했다. 아직 dfs를 짜는데 좀 익숙하지 않은 것 같다.
나중에 다시 살펴봐야겠다.
import sys
sys.setrecursionlimit(10**6)
def dfs(queen,n,row):
answer = 0
if n == row:
return 1
for i in range(n):
queen[row] = i
for j in range(row):
if queen[j] == queen[row]:
# 같은 열에 있을 경우
break
if abs(queen[j] - queen[row]) == row-j:
# 대각선인 경우
break
else:
answer += dfs(queen,n,row+1)
return answer
def solution(n):
queen = [0]*n
answer = dfs(queen,n,0)
return answer
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 퍼즐 조각 채우기 (Python) (0) | 2021.11.29 |
---|---|
[프로그래머스] 표 편집 (Python) (0) | 2021.11.24 |
[프로그래머스] 하노이의 탑 (Python) (0) | 2021.11.23 |
[프로그래머스] 스티커 모으기(2) (Python) (0) | 2021.11.23 |
[프로그래머스] 숫자 게임 (Python) (0) | 2021.11.23 |
댓글