출처
https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV7GKs06AU0DFAXB&categoryId=AV7GKs06AU0DFAXB&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=6
과정
- 퀸을 저장할 d 리스트와 경우의 수를 저장할 cnt를 만들어준다.
- 한줄씩 재귀할 dfs를 만들어준다.
- x가 n과 같다면 모든행을 돌았다는 것이므로 cnt에 1을 더해준다.
- 그게 아니라면 i 는 열번호 0부터 N 전까지 옮겨가면서 유망한곳 찾기이고 d[x]에 i 값을 저장한다.
- 행,열,대각선 check함수가 true이면 백트래킹 안하고 계속 진행한다.
- check함수에서 인덱스가 행 d[i] 값이 열이므로 열이 같거나 대각선이 같으면 False를 반환하고 무사히 다 통과하면 True를 반환한다. (대각선이 같은 경우는 행-행 = 열-열이 같으면 두개는 대각선상에 있는 것이다.)
- 테스트 케이스 번호와 cnt를 출력해준다.
정답 코드