개발/Swift

[Swift] 위장 프로그래머스 코딩테스트

덤벨로퍼 2022. 1. 2. 15:03

우선 주어진 배열을 딕셔너리 타입으로 변환한다.

딕셔너리는 의상의 종류(키) : 의상의 갯수(값) 으로 구성된다.

{
  "headgear" : 2 ,
  "eyewear": 1
}

위 의상들을 조합할수있는 코디의 개수는 5개다.

모자는 총 두개이므로 3가지의 경우가 나온다. 1번 모자를쓰거나 2번 모자를 쓰거나 둘다 안쓸수도있다.

안경은 총 한개이므로 2가지 경우가 나온다. 1번 안경을 쓰거나 안쓸수도있다.

그럼 이 두개를 곱해주면 된다. 3 *2 = 6

그런데 아무거도 안입는 경우는 없다하니 -1 을 해주면 된다.

코드로 바꿔보자.

func solution(_ clothes:[[String]]) -> Int {
    var dict = [String:Int]()
    var count = 1 // 곱셈을 사용해야하므로 초기값을 1로 넣었다.
		//딕셔너리 구현
    clothes.forEach{ value in
        if let count = dict[value[1]] {
						//해당 키값이 있는경우 수량 +1
            dict[value[1]] = count + 1
        }else {//키값 없으면 넣어주고 수량 1 넣어줌
            dict[value[1]] = 1
        }
    }
		//딕셔너리 반복해 값을 모두 곱해줌
    dict.forEach { (key,value) in
         count = count * ( value + 1)            
    }
		//모두안입는경우 제와 -1
    count -= 1
    return count
}