알고리즘[Python]/프로그래머스
[ Lv 3 ] N-Queen
병훈1234
2021. 7. 16. 22:59
풀이 과정
- 재귀 함수를 활용함.
- i행 기준으로 모든 열을 탐색하면서 0~i-1행까지 존재하는 퀸들과 충돌하지 않는지 확인(같은 열이거나 대각선에 존재하거나)
- (2)번이 통과한다면 현재 단계에서의 퀸을 리스트에 넣어준 후 다음 단계로 이동
- 전체 행 진행하였다면 정답을 1 증가(answer)
answer = 0
def check(x1, y1, x2, y2):
if abs(y2 - y1) == abs(x2 - x1):
return True
else:
return False
def queen(current, row, n):
global answer
if row == n:
answer += 1
return
for i in range(n):
skip = False
for x1, y1 in current:
if y1 == i or check(row, i, x1, y1):
skip = True
break
if not skip:
queen(current+[[row, i]], row+1, n)
return
def solution(n):
global answer
queen([], 0, n)
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges