본문 바로가기
알고리즘/프로그래머스

N-Queen

by 1.5볼트 2023. 3. 6.
728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/12952

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

다른 곳에서도 본 문제다. n*n 크기 체스판 위에 퀸 n 개를 서로 공격하지 못하게 배치하는 문제

일단 퀸 이 대각선과 수평수직 공격을 하니까 같은 줄 같은 열 같은 대각선에는 배치하지 못한다 이 조건을 써서 위에부터 한 마리씩 배치하면서 만약 불가능한 배치 면 다시 돌아가서 배치함 반복적으로 하니까 재귀 함수 사용하면 간단하다

모든 가능한 구역에서 위에 떨어져 있는 만큼 +- n을 해주면 대각선을 제거되고 본인의 위치를 제거하면 열까지 제거 가능 남은 구역만 계속 가다가 끝까지 도달하면 return

 

def solution(n):
    def f(p=[],m=0):
        s=0
        if m==n:return 1
        u=set(range(n))
        for k,i in enumerate(p):
            u-={i-(m-k),i+(m-k),i}
        for i in u :
            s+=f(p+[i],m+1)
        return s
    return f()

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

네트워크  (0) 2023.03.10
바탕화면정리  (0) 2023.03.08
그룹별 조건에 맞는 식당 목록 출력하기  (0) 2023.03.05
마법의 엘리베이타  (0) 2023.03.04
아이템 줍기  (0) 2023.03.01

댓글