val list = mutableListOf<Int>()
var answer = 0
fun main() {
val T = readLine()!!.toInt()
readLine()!!.split(" ")
.map { list.add(it.toInt()) }
logic(0, 0)
println(answer)
}
fun logic(count: Int, sum: Int) {
if (list.size == 2) {
answer = Math.max(answer, sum)
return
}
for (index in 1..(list.lastIndex - 1)) {
val temp = list[index]
val addNum = sum + list[index - 1] * list[index + 1]
list.removeAt(index)
logic(count + 1, addNum)
list.add(index, temp)
}
}
입력값 처리:
list
: 입력 받은 값을 저장하기 위한 리스트. 전역 변수로 선언하여 다른 메소드에서도 사용할 수 있도록 합니다.answer
: 가장 큰 값을 비교하며 갱신하기 위해 선언한 변수입니다.logic
메소드:
sum
값을 answer
와 비교하여 더 큰 값으로 갱신합니다.for
반복문을 통해 1부터 list.lastIndex - 1
까지 순회합니다.(문제 조건이였습니다.) 문제 조건에 따라 계산을 진행합니다.temp
에 임시로 저장하고, list[index - 1] * list[index + 1]
을 계산하여 sum
에 더합니다. 이후 list[index]
를 삭제하고 재귀적으로 logic
을 호출합니다.출처 : 백준 - 에너지 모으기 16198번