LeetCode - 2363. Merge Similar Items

henu·2023년 10월 30일
0

LeetCode

목록 보기
130/186

Solution

var mergeSimilarItems = function(items1, items2) {
    const hash = {}
    const ret = []

    for(let item of items1) {
        hash[item[0]] = item[1]
    }

    for(let item of items2) {
        hash[item[0]] ? hash[item[0]] += item[1] : hash[item[0]] = item[1]
    }

    for(key in hash) {
        ret.push([key, hash[key]])
    }

    return ret
};

Explanation

Hash Table을 이용하여 해결하였다.
Hash Table에 items1items2가 가지고 있는 프로퍼티들을 기록하는데 중복된 valueweight는 합쳐주었다.
1. items1을 순회해서 Hash Table에 기록한다.
2. items2를 순회해서 Hash Table에 기록한다. 이 때 중복된 valueweight는 합쳐주었다.
3. Hash Table을 순회해서 결과를 담은 배열 ret[value, weight]양식으로 프로퍼티를 추가한다.

Others

var mergeSimilarItems = function(items1, items2) {
    const hash = {}
    const items = [...items1, ...items2]

    for(let item of items) {
        hash[item[0]] ? hash[item[0]] += item[1]: hash[item[0]] = item[1]
    }

    return Object.entries(hash)
};

Explanation

굳이 for문을 두 번 실행할 필요없이 items1items2를 합친 후 for문을 한 번만 실행한다.
그리고 Object.entries 메소드를 사용하면 for...in문 필요없이 쉽게 객체를 [key, value]형식의 2차원 배열로 변환할 수 있다.

0개의 댓글