본문 바로가기

알고리즘

[코딩테스트] Level. 1 내적 Kotlin

728x90

문제 설명

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)


제한사항
  • a, b의 길이는 1 이상 1,000 이하입니다.
  • a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

 

입출력 예
[1,2,3,4] [-3,-1,0,2] 3
[-1,0,1] [1,0,-1] -2

 

나의 풀이 . 같은 index 의 것과 계산을 하는 법 이니 유용하다.

 

private fun solution(a: IntArray, b: IntArray): Int {
        var answer: Int = 0
        a.forEachIndexed { i, v ->
            answer += v * b[i]
        }
        return answer
 }

 

고수들의 풀이 . 코틀린 스러운 것 같다. 

zip 을 사용하여 map 을 이용한다. zip 은 처음 보는 것 같은데 나중에 유용할 것 같다. 

 

 fun solution(a: IntArray, b: IntArray): Int {
        return a.zip(b).map { it.first * it.second }.sum()
    }

 

다른 고수 mapIndexd 를 사용하여 풀이하였다. sum() 을 사용하는 게 여러모로 편한 풀이같다.

class Solution {
    fun solution(a: IntArray, b: IntArray): Int = a.mapIndexed { index, it -> it * b[index] }.sum()
}