음양 더하기

HJ Kwon·2021년 12월 20일
0
  • 익숙한 idx 순회를 통해 합을 구하였다.
  • 풀고나니 foldIndexed로 푼 답안이 더욱더 kotlin스러워 보인다.
// 나의 풀이
class Solution {
    fun solution(absolutes: IntArray, signs: BooleanArray): Int {
        var answer: Int = 0
        for (i in absolutes.indices) {
            if (!signs[i]) {
                absolutes[i] *= -1
            }
            answer += absolutes[i]
        }
        return answer
    }
}
// foldIndexed 사용한 풀이
class Solution {
    fun solution(absolutes: IntArray, signs: BooleanArray) =
        absolutes.foldIndexed(0) { idx, acc, num -> acc + if (signs[idx]) num else -num }
}
  • foldIndexed의 기본적인 사용방법은 아래와 같다.
  • {idx, sum, num -> sum + num}에서 idx는 '_' 로 치환가능하다.
  • sum과 num이 어떻게 초기화되는지 궁금하다...
var numbers = intArrayOf(1, 2, 3)
println(numbers.foldIndexed(0){ _, sum, num -> sum + num})

0개의 댓글