알고리즘/Python

[python] 프로그래머스 - N-Queens

제주도랏맨 2022. 6. 1. 02:29

출처 : 프로그래머스 코딩테스트 연습, 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의 형태를 바꿔도 되는구나. 신기하다.


 

시간 복잡도

 

-

 

알게 된 점

 

-

 

고찰

 

-