반응형

백준 10819 문제입니다. (solved.ac)기준 실버 2 문제입니다.

문제 접근

경우의 수가 적기 때문에 일일이 확인해주었습니다. 배열 A에서 원소의 개수만큼 뽑는 순열을 구하고 모든 순열을 수식에 넣어서 최대값을 구하도록 구현하였습니다.

순열 구하기

순열, 조합 구현하기(Kotlin - 코틀린 및 Python - 파이썬)

 

순열, 조합 구현하기(Kotlin - 코틀린 및 Python - 파이썬)

브루트 포스, 백트래킹 관련 문제를 푸는데 순열, 조합이 필요한 경우가 정말 많았는데 스스로 구현을 못해서... 정리를 해보게 되었다. 순열과 조합의 차이 순열은 permutation이다. nPr과 같은 형식

soopeach.tistory.com

정답 코드

import kotlin.math.abs

val size = readln().toInt()
val num = readln().split(" ").map { it.toInt() }
val visited = BooleanArray(num.size, { false })
val result = mutableListOf<Int>()
var ans = 0
fun main() {

    permutation(0, size)
    println(ans)

}

// 순열로 모든 경우의 수 확인
fun permutation(cnt : Int, depth : Int) {
    if (cnt == depth) {
        // 이전 순열의 최대값(ans)보다 현재 순열의 최대값이 더 크다면 갱신
        if (getMax(result) > ans) ans = getMax(result)
        return
    }
    for (i in 0 until num.size) {
        if (visited[i] == false) {
            visited[i] = true
            result.add(num[i])
            permutation(cnt + 1, depth)
            result.removeAt(result.lastIndex)
            visited[i] = false

        }
    }
}
// 수식을 계산
fun getMax(array: MutableList<Int>): Int {
    var ans = 0
    for (index in 2..array.size) {
        ans += abs(array[index - 2] - array[index - 1])
    }
    return ans
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기