-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
백준 9663 N-Queen
[문제유형] 백트래킹
https://www.acmicpc.net/problem/9663
백트래킹 대표 문제
처음에는 2차원 배열로 퀸의 위치를 나타내었다. -> 시간초과
다른 풀이를 찾아본 결과
한 행에는 하나의 퀸밖에 있을 수 없기 때문에col[행] = 열 방식으로 개선할 수 있었다
fun checker(cur : Pos) : Boolean{
//행탐색
for(i in 0 until cur.row){
if((col[i] == col[cur.row] || Math.abs(i-cur.row) == Math.abs(col[i]-cur.col))){
return false
}
}
return true
}
fun backTracking( level : Int){
//대각선과 각 row col에 놓아서는 안 된다
if(level == N ){
result ++
return
}
if(level>=N) return
for(j in 0 until N){
col[level] = j //level번째 행 j열 에 퀸을 놓는다.
if(checker(Pos(level,j))) {
//유망한 노드
backTracking(level+1)
}
}
}
Metadata
Metadata
Assignees
Labels
No labels