[Kotlin] zip(), mapIndexed()

애이용·2021년 9월 21일
0

프로그래머스 내적 문제를 가지고 zip, mapIndexed 함수에 대해 정리하겠다.

  • 내가 작성한 코드
    다음과 같이 mapIndexed, zip 함수 없이 작성도 가능하다.
class Solution {
    fun solution(a: IntArray, b: IntArray): Int {
        var answer = 0
        for (idx in a.indices) {
            answer += a[idx] * b[idx]
        }
        return answer
    }
}
  • mapIndexed()
    mapIndexed()는 컬렉션에 포함된 인자의 인덱스 값을 변환하여 사용 가능하다.
    다음과 같이 sum()와 함께 한 줄로 코드 작성이 가능하다.
class Solution {
    fun solution(a: IntArray, b: IntArray): Int {
        return a.mapIndexed { idx, num -> num * b[idx] }.sum()
    }
}
  • zip()
    두 컬렉션의 자료들을 조합하여 새로운 자료를 만들 때 사용한다. 두 컬렉션 간 자료의 개수가 달라도 되고, 더 적은 개수에 컬렉션쪽으로 따라 간다. 조합된 결과는 Pair로 만들어주고, 원할 경우 규칙을 정의할 수 있다.
class Solution {
    fun solution(a: IntArray, b: IntArray): Int {
        return a.zip(b).map { it.first * it.second }.sum() 
    }
}
profile
로그를 남기자 〰️

0개의 댓글

관련 채용 정보