프로그래머스

[프로그래머스_Kotlin] 내적

내손은개발 🐾 2024. 1. 29. 13:32
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

길이가 같은 두 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의 길이)
제한사항 입출력 예

 

내 생각

for문으로 길이만큼 받아서 answer에 다 더하기

내 풀이
class Solution {
    fun solution(a: IntArray, b: IntArray): Int {
        var answer: Int = 0

        for (i in a.indices) {
            answer += a[i] * b[i]
        }

        return answer
    }
}​


다른 사람의 풀이

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

 

 

알게된 점

 

1. indeices

IntArray의 size를 받아 for문을 사용하려했는데 indices를 알게되었다.

(a의 사이즈가 2이면 = 0..2)

 

 

2. 매핑 함수

map(), mapIndexed()는 매핑함수라고 하는데 forEach()함수와 유사하다. 집합 객체의 데이터 수만큼 반복하여 실행하는 것은 동일하나 forEach()와는 다르게 반환 값이 있다는 점이다. 

 

val list = listOf<Int>(12, 8, 9, 20)
list.filter { it > 10 }
       .map { it * 10 } // 120
       .forEach { println(it) } //200
val list = listOf<Int>(12, 8, 9, 20)
list.filter { it > 10 }
       .map { it * 10 }
       .map { println(it) }

참고