[프로그래머스] 내적

neoneoneo·2024년 2월 27일
0

kotlin

목록 보기
12/49

문제

길이가 같은 두 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의 길이)

나의 풀이

class Solution {
    fun solution(a: IntArray, b: IntArray): Int {
        var answer: Int = 0
        for (i in 0 .. a.size-1) {
            answer += (a[i]*b[i])
        }
        return answer
    }
}

고수의 풀이

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

배운점

  • 고수는 만들어져있는 라이브러리를 다양하게 잘 활용한다. 나는 기본 반찬으로만 어떻게든 만들어보는데.. 다만, 이번에는 내가 작성한 코드의 실행 시간이 더 짧다. 그럼에도 이번에는 고수가 사용한 다른 기법(?)들을 학습하는 차원에서 글을 적어본다.
  • .zip()의 활용
    • zip은 배열 a, b를 쌍으로 묶어준다.
      • [(a[0], b[0]), (a[1], b[1]), (a[2], b[2]), ...]
  • .map{람다 함수}의 활용
    • map은 각 요소에 대해 주어진 람다 함수를 적용하여 새로우 컬렉션을 생성해준다.
      • 컬렉션은 여러 개의 요소를 담고 있는 데이터 구조를 말한다(예, List, Set, Map).
    • 결과적으로 묶인 각 쌍에 대해 첫 번째 요소와 두 번째 요소를 곱한 값을 가지는 리스트를 생성하게 된다.

[TIL-240227]

0개의 댓글