본문 바로가기

알고리즘

[프로그래머스] 위장 #코틀린 #kotlin #hash #level2

반응형

https://programmers.co.kr/learn/courses/30/lessons/42578?language=kotlin 

 

코딩테스트 연습 - 위장

 

programmers.co.kr

풀이

옷을 입는 방법의 수는 (종류 1 옷의 수) * (종류 2 옷의 수) * ...입니다. 해당 종류의 옷이 존재하지 않으면 고려하지 않습니다. 스파이는 하루에 최소 한 개의 의상은 입으므로, 아무 것도 안 입는 경우의 수를 하나 제거합니다. 안경만 입거나 하긴 한다는 거네... 변태.

class Solution {
    fun solution(clothes: Array<Array<String>>) =
        clothes.groupBy { (_, type) -> type }.values
            .fold(1) { acc, v -> acc * (v.size + 1) } - 1
}

.fold 메소드는 .reduce와 같이 배열을 순회하며 클로저를 실행해 결과를 acc에 누적하는 역할을 하지만, .reduce는 배열의 첫 번째 값을 acc의 초깃값으로 사용하는 반면, .fold를 사용하면 acc의 초깃값을 지정해줄 수 있습니다.

반응형