느낀점
종류별로 딕셔너리를 활용해 정리하는 것과
입지 않은 경우를 포함해서 count를 1씩 증가한 후
전체 입지 않은 경우인 1을 빼주는 것을 생각해내야 했다
문제를 풀면서는 [String: Int]타입으로 정리해봤는데
[String: [String]]타입으로 정리한다면 아래와 같다
var dictionary = [String: [String]]() dictionary["a"] = ["a"] let newVal = "b" if let existVal = dictionary["a"] { if !existVal.contains(newVal) { dictionary["a"] = existVal + [newVal] } } print(dictionary) //["a": ["a", "b"]]
let phoneBook = [["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]
var dict = [String: Int]()
// 종류별로 개수 정리하기
phoneBook.forEach { item in // 생략하면 $0[0], $0[1]로 접근 가능함
//let value = item[0]
let key = item[1]
if let valueCount = dict[key] {
dict[key] = valueCount + 1
} else {
dict[key] = 1
}
}
print(dict) // ["eyewear": 1, "headgear": 2]
// 종류별로
// (key: "eyewear", value: 1) 이런 식으로 접근하는구나
var result = 1
//dict.forEach { key, value in
// result *= value
//}
//dict.forEach { item in
// result *= (item.value + 1)
//}
for value in dict.values {
result *= (value + 1)
}
print(result-1)