반응형
백준 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
}
반응형
'알고리즘 문제풀이[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 |
최근댓글