Algorithm/BruteForce

BOJ#2309 일곱 난쟁이

밤이2209 2017. 7. 5. 19:36

BOJ#2309 일곱 난쟁이


* 문제


* 풀이

오름차순 정렬 후 순열 -> 문제 조건(합이 100)인 경우 return



* 나의 코드 (Kotlin)


import java.util.*

fun main(args: Array<String>) {

val input = Scanner(System.`in`)

var numArr = Array(9, { 0 })

for (i in 0..8) {

numArr.set(i, input.nextInt())
}

numArr.sort()

permutaion(numArr, 0)

for (i in 0..6) {

println(numArr[i])
}
}

fun permutaion(numArr: Array<Int>, depth: Int): Boolean {

if (depth == 7) {

var sum = 0
for (i in 0..6) {

sum += numArr[i]
}

return sum == 100
}

for (i in depth..8) {

swap(numArr, depth, i)
if (permutaion(numArr, depth + 1)) return true
swap(numArr, depth, i)
}

return false
}

fun swap(numArr: Array<Int>, a: Int, b: Int) {

val temp = numArr[a]

numArr[a] = numArr[b]
numArr[b] = temp
}


'Algorithm > BruteForce' 카테고리의 다른 글

BOJ#14391 종이 조각  (0) 2017.09.29
BOJ#6603 로또  (0) 2017.09.10