반응형
백준 10819 문제입니다. (solved.ac)기준 실버 2 문제입니다.
문제 접근
경우의 수가 적기 때문에 일일이 확인해주었습니다. 배열 A에서 원소의 개수만큼 뽑는 순열을 구하고 모든 순열을 수식에 넣어서 최대값을 구하도록 구현하였습니다.
순열 구하기
순열, 조합 구현하기(Kotlin - 코틀린 및 Python - 파이썬)
정답 코드
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
}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 1182 부분수열의 합(브루트 포스 / 완전 탐색)[Kotlin - 코틀린] (0) | 2022.05.18 |
---|---|
[백준] 18111번 마인크래프트(브루트 포스 / 완전 탐색)[Kotlin - 코틀린] (0) | 2022.05.16 |
[백준] 4673번 셀프 넘버(브루트포스 / 완전 탐색)(코틀린 - Kotlin) (0) | 2022.05.12 |
[백준] 2309번 일곱 난쟁이(브루트포스 / 완전 탐색)(코틀린 - Kotlin) (0) | 2022.05.12 |
[백준] 1157번 단어 공부(코틀린 - Kotlin) (0) | 2022.05.10 |
최근댓글