이모저모

leetcode - n-queen : DFS, Backtracking 공부 본문

coding/알고리즘,자료구조

leetcode - n-queen : DFS, Backtracking 공부

Jeo 2022. 1. 24. 12:27

항해 강의에서 남병관 튜터님 설명을 듣고 다시 공부하고 코드 써보기!

계속 공부하다보면은 스스로 이런 문제를 풀어낼 수 있게 되길🐜📝✊

class Solution(object):
    def solveNQueens(self, n):
        """
        :type n: int
        :rtype: List[List[str]]
        """
        visited = [-1]*n
        answers = []
        
        def DFS(L):
            if L == n:
                grid = [['.']* n for _ in range(n)]
                for v, i in enumerate(visited):
                    grid[i][v] = "Q"
                result = []
                for row in grid:
                    result.append(''.join(row))
                answers.append(result)
                return
            else:
                for col in range(n):
                    visited[L] = col
                    isPossible = True
                    for passed_row in range(L):
                        if visited[L] == visited[passed_row] or L-passed_row == abs(visited[L]-visited[passed_row]):
                            isPossible = False
                    if isPossible:
                        DFS(L+1)
                        
        DFS(0)
        return answers
Comments