DEV

[py] N-Queen

찻잔속청개구리 2024. 11. 17. 20:21
반응형

인증사진(2024-11-17)

 

문제

class NQueen:
    def __init__(self, size):
        self.size = size  // 체스판 크기
        self.solutions = [] // 리스트 생성
        self.col = [-1] * size   // 행에 배치된 퀸의 열을 기록하기 위한 초기화

    def solution(self):
        self.put_queen(0) 
        return self.solutions  

    def put_queen(self, row):
    
        if row == self.size:
            self.solutions.append(self.col[:])
        else:
            for col in range(self.size):
                if self.check_pos(row, col):  
                    self.col[row] = col  
                    self.put_queen(row + 1) 

    def check_pos(self, rows, col):
        for i in range(rows):
            if self.col[i] == col:
                return False
            if self.col[i] - i == col - rows: //왼쪽 대각선
                return False
            if self.col[i] + i == col + rows: //오른쪽 대각선
                return False
        return True
    
def solution(n):
    n_queen = NQueen(n)
    answer = n_queen.solution()
    return len(answer)

 

추가공부

 

이번 문제에서는 체스 판에서의 퀸의 성질을 아는 것이 중요하다. 같은 열과 각 대각선에 퀸이 놓여지면 안되는 것을 파악한 후, 백트래킹 방법으로 방향성을 잡는 것이 중요하다.  

반응형

'DEV' 카테고리의 다른 글

[py] 탐욕법 | 구명보트  (0) 2024.12.01
[Py] 올바른 괄호  (1) 2024.11.24
[Python] 탐욕법(Greedy) | 큰 수 만들기  (0) 2024.11.10
[Python] 체육복  (0) 2024.11.03
[Python] 카펫  (0) 2024.10.27