코딩테스트

프로그래머스 | 내적 | Kotlin

다시은 2024. 1. 4. 09:58

for문 중첩해서 돌리는 것 방법밖에 생각이 안난다.😰😰😰

class Solution {
    fun solution(a: IntArray, b: IntArray): Int {
        var answer: Int = 0
        for((i, a) in a.withIndex()){
            for((ii,b)in b.withIndex()){
                if(i == ii) answer += (a * b)
            }
        }
        return answer
    }
}

내적

: 두 서열의 상응하는 값들의 곱을 더한 것

 

 

다른 사람 풀이

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

인덱스로 바로 꺼내오는걸 왜 생각못했을까 😒😒😒😒😒

 

 

다른 사람 풀이 2

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

zip()

: 두 List 를 동일한 Index 끼리 묶어준다.

두 List 의 사이즈가 다른 경우 사이즈가 더 적은 리스트만큼의 크기로 나온다.

val a = listOf(1,2,3,4)               // 1, 2, 3, 4, 5, 6
val b = listOf("a", "b", "c", "d")    // a, b, c, d

val ba = b.zip(a){b, a -> b+a}        // a1, b2, c3, d4