Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ScreenSize
- 코딩테스트 자바
- JavaCodingTest
- baekjoon
- 코테
- 티스토리챌린지
- programmers
- 뷰바인딩
- javaCoding
- 안드로이드
- 자바 코딩테스트
- CodingTestJava
- 오블완
- 화면 크기 구하기
- Android
- 코딩테스트 JAVA
- 산타 환급반
- Java
- 자바
- pattern
- viewpager2
- 코틀린
- ModelViewPresenter
- kotlin
- 코딩테스트
- CodingTest
- BottomNavigation
- 백준
- 코테자바
- Coding-Test
Archives
- Today
- Total
KDLiam
Baekjoon(Kotlin) - 9663. N-Queen 본문
URL : https://www.acmicpc.net/problem/9663
9663번: N-Queen
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
[ RESULT ]
import java.io.BufferedReader
import java.io.InputStreamReader
val br = BufferedReader(InputStreamReader(System.`in`))
fun main() {
val N = br.readLine().toInt()
val board = Array(N) { BooleanArray(N) { false } }
val result = NQueen(board, N, 0)
println(result)
}
fun NQueen(board: Array<BooleanArray>, N: Int, row: Int): Int {
if (row == N) { return 1 }
var cnt = 0
for (col in 0 until N) {
if (isValid(board, N, row, col)) {
board[row][col] = true
cnt += NQueen(board, N, row + 1)
board[row][col] = false
}
}
return cnt
}
fun isValid(board: Array<BooleanArray>, N: Int, row: Int, col: Int): Boolean {
for (i in 0 until row) {
if (board[i][col]) { return false }
}
var i = row - 1
var j = col - 1
while (i >= 0 && j >= 0) {
if (board[i][j]) { return false }
i--
j--
}
i = row - 1
j = col + 1
while (i >= 0 && j < N) {
if (board[i][j]) { return false }
i--
j++
}
return true
}
'Problems(Kotlin) > Baekjoon' 카테고리의 다른 글
| Baekjoon(Kotlin) - 24416. 알고리즘 수업 - 피보나치 수 1 (0) | 2023.09.07 |
|---|---|
| Baekjoon(Kotlin) - 11053. 가장 긴 증가하는 부분 수열 (3) | 2023.09.07 |
| Baekjoon(Kotlin) - 2580. 스도쿠 (0) | 2023.09.05 |
| Baekjoon(Kotlin) - 15650. N과 M (2) (0) | 2023.09.04 |
| Baekjoon(Kotlin) - 15649. N과 M (1) (0) | 2023.09.03 |