달달한 스토리

728x90
반응형

출처 핀터레스트

 

fold 메서드를 알게 된 후로 자주 애용하게 된 것 같다.

 

아래 코드를 보자.

 

없는 숫자 더하기

 

class Solution {
    fun solution(numbers: IntArray): Int = (0..9).fold(0) { acc, num ->
        acc + if(!numbers.contains(num)) num else 0
    }
}

0.. 9에서 숫자를 fold로 뿌려주고,

 

파라미터로 전달받은 numbers IntArray에 포함되어 있지 않으면,

 

acc에 더해주는 메서드이다.

 

근데 이것보다 훨씬 간결한 코드를 보았다.

 

//없는 숫자 더하기
class AddMissingNumbers {
    fun solution(numbers: IntArray): Int = 45 - numbers.sum()
}

와우..

 

모든 0에서 9까지 합이 45니까

 

거기서 전달받은 numbers에 합을 빼버리는 솔루션이다..

 

이렇게 간단하게 표현하다니.. 대단하다..

 

 

다음 문제를 보자..

 

내적

 

//내적
class DotProduct {
    fun solution(a: IntArray, b: IntArray): Int =
        a.foldIndexed(0) { idx, acc, num ->
            acc + num * b[idx]
        }
}

해당 문제 역시 fold를 사용했다.

 

배열에 각각 같은 인덱스를 가진 요소끼리 곱하는 문제를

 

foldIndexed를 응용하여 풀었다.

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading