LeetCode - 1791. Find Center of Star Graph

henu·2023년 9월 6일
0

LeetCode

목록 보기
66/186

Solution

var findCenter = function(edges) {
    const hash = edges.reduce((acc, cur) => {
        acc[cur[0]] ? acc[cur[0]] += 1 : acc[cur[0]] = 1
        acc[cur[1]] ? acc[cur[1]] += 1 : acc[cur[1]] = 1
        return acc
    }, {})

    for(let key in hash) {
        if(hash[key] === edges.length) return key
    }
}

Explanation

필자의 접근법은 일단 reduce를 사용해서 각 노드별 엣지의 수를 기록한 hash 객체를 생성하고 for문을 통해 노드 중 가장 많은 엣지를 갖고있는 노드를 리턴하는 방식이다.

Other

var findCenter = function(edges) {
    const [[a, b], [c, d]] = edges;
    return a === c || a === d ? a : b 
}

굉장히 직관적이고 합리적인 해결방법이다.
모든 엣지들을 다 비교할 필요 없이 두 엣지만 비교하면 되는 것이었다. star graph이기 때문에 두 엣지의 공통 노드가 중앙 노드가 된다.
간단하게 구조 분해 할당으로 노드들을 할당한다. 그리고 acd와 같으면 a가 중앙 노드가 되고 아니면 b가 된다.

0개의 댓글