[SWEA]2806. N-Queen

Jungmin Lee·2021년 4월 25일
1

APS

목록 보기
24/25
post-thumbnail

SWEA 2806 문제 바로가기
문제의 저작권은 SW Expert Academy에 있습니다.

문제

나의코드

dx=[0,0,1,-1]
dy=[1,-1,-1,-1]

def queencheck(x,y):
    for k in range(4):
        newx=x+dx[k]
        newy=y+dy[k]
        while 0<=newx<N and 0<=newy<N:
            if board[newx][newy]:
                return False
            newx += dx[k]
            newy += dy[k]
    return True


def DFS(x,y):
    global answer
    if y==N-1:
        answer += 1
    else:
        for i in range(N):
            if queencheck(i, y+1):
                board[i][y+1] = True
                DFS(i, y+1)
                board[i][y+1] = False

for tc in range(int(input())):
    N=int(input())
    board=[[False]*N for _ in range(N)]
    answer=0
    for i in range(N):
        if queencheck(i,0):
            board[i][0]=True
            DFS(i,0)
            board[i][0]=False
    print('#{} {}'.format(tc+1, answer))
profile
금융 도메인과 개발 지식을 함께 쌓아가는 주니어 개발자입니다😊

0개의 댓글