코딩연습

[백준] N-Queen (9663)(Kotlin)

유줘니 2020. 3. 18. 16:06

원본 문제 : https://www.acmicpc.net/problem/9663

문제 참고 : https://javannspring.tistory.com/179

 

<첫번째>

 

import java.util.*
import kotlin.math.abs

var n: Int = 0
var answer: Int = 0
var col: IntArray = intArrayOf()

fun main() {

    val sc: Scanner = Scanner(System.`in`)
    n = sc.nextInt()
    col = IntArray(n)

    for (i in 0 until n) {
        col[0] = i
        nQueen(i, 0)
    }

    println(answer)
}

fun nQueen(x: Int, y: Int) {

    for (i in 0 until y) {
        if (col[i] == x || abs(x - col[i]) == y - i) return
    }

    if (y == n - 1) {
        answer++
        return
    }

    for (i in 0 until n) {
        col[y + 1] = i
        nQueen(i, y + 1)
    }
}