본문 바로가기

알고리즘

[해쉬] 위장 - 프로그래머스 Swift

 

문제 : https://programmers.co.kr/learn/courses/30/lessons/42578

 

음.. 해쉬를 이용한다는 것 까지는 알았는데 수학에 약해서 경우의 수를 어떻게 계산해야 될지 몰랐다.. ㅠㅠ

import Foundation

func solution(_ clothes:[[String]]) -> Int {
    var result = 1
    var dic = [String:Int]()
    
    for cloth in clothes {
        if dic[cloth[1]] == nil {
            dic[cloth[1]] = 1
        } else {
            dic[cloth[1]]! += 1
        }
    }
    for (key,val) in dic {
        result *= (val + 1)
    }
    
    //아무것도 선택 안하는 경우는 없으므로 1 빼줌
    result = result - 1
    
    return result
}

 

문제풀이 

(A옷의 종류의 갯수 + 1) * (B옷의 종류의 갯수 + 1) * (C옷의 종류의 갯수 + 1) - 1

+ 1 은 옷을 선택,비선택 할 경우 2가지가 있어서 +1 해줌

- 1 은 아무것도 선택 안하는 경우는 없으므로 1 빼줌

반응형