- 익숙한 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})