프로그래머스 - 해시

인생노잼시기·2021년 8월 13일
0

😨코딩테스트

목록 보기
16/18

위장

느낀점
종류별로 딕셔너리를 활용해 정리하는 것과
입지 않은 경우를 포함해서 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)
profile
인생노잼

0개의 댓글