알고리즘/알고리즘 문제풀이

해시_프로그래머스_위장

Downey 2021. 7. 14. 16:52

각 의상 카테고리 + 1 을 하고 (해당 카테고리를 착용하지 않는 경우)

각 의상 카테고리를 곱하여 경우의 수를 구한 뒤

경우의 수 - 1 을 하여 결과를 도출 (모두 입지 않는 경우)

각 의상 카테고리를 어떻게 구해 낼 까 고민이었음.

처음에는 clothes.map하여 의상분류별로 2중배열을 만들어 각 배열의count를 곱할까 했는데,

dictionary key를 사용하는 편이 쉬울 것이라 생각하여 이와 같이 구현함.


import Foundation  

func solution(_ clothes:[[String]]) -> Int {
    var dic:[String:Int] = [:]
    var sol = 1

    clothes.enumerated().makeIterator().forEach({
        if dic[$0.element[1]] == nil {
            dic[$0.element[1]] = 1
        } else {
            dic[$0.element[1]] = dic[$0.element[1]]! + 1
        }

    })
    dic.forEach({ (key, value) in
        sol = sol * (value + 1)
    })

    return sol - 1
}