출처 : 프로그래머스 코딩테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12952
코딩테스트 연습 - N-Queen
가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은
programmers.co.kr
더보기
풀이
stack = [] #퀸의 좌표를 넣는 공간.
answer = 0 #방법의 수
def check(location):
mx, my = location
for queen in stack:
x, y = queen
if mx == x or my == y:
return False
if abs((mx - x)/(my-y)) == 1:
return False
return True
def solution(n, current = 0):#현재 라인을 받는다.
global answer
if current == n:
answer += 1
return
for col in range(n):
if check([current, col]):
stack.append([current, col])
solution(n, current+1)
stack.pop()
return answer
그래도 풀어본 문제라고 굉장히 빨리 풀었다.
solution의 형태를 바꿔도 되는구나. 신기하다.
시간 복잡도
-
알게 된 점
-
고찰
-
'알고리즘 > Python' 카테고리의 다른 글
[python] 프로그래머스 - 네트워크 (0) | 2022.06.28 |
---|---|
[python] 프로그래머스 - 2 x n 타일링 (0) | 2022.06.01 |
[python] 백준 16926 - 배열 돌리기 1 (0) | 2022.05.16 |
[python] 프로그래머스 - 행렬 테두리 회전하기 (0) | 2022.05.16 |
[python] 백준 1932 - 정수 삼각형 (0) | 2022.05.07 |