LeetCode - 2103. Rings and Rods

henu·2023년 9월 21일
0

LeetCode

목록 보기
83/186

Solution

var countPoints = function(rings) {
    const hash = {};

    for(let i=0; i<rings.length; i+=2) {
        if(hash[rings[i+1]]) {
            hash[rings[i+1]] += rings[i];
        } else {
            hash[rings[i+1]] = rings[i]
        }
    }

    let result = 0;

    for(key in hash) {
        if(hash[key].includes('B') && hash[key].includes('R') && hash[key].includes('G')) {
            result++
        }
    }

    return result;
};

Explanation

문제의 태그로 적혀있는 Hash Table을 이용해서 풀었다.
문자열 rings를 for문을 이용해서 순회하면서 0부터 9까지의 rod별 링을 객체 hash에 기록하였다.
그리고 hash에 for...in문을 이용해서 'R', 'G', 'B' 세 가지 색상을 모두 갖고 있는지 확인하였다.

Others

var countPoints = function(rings) {
    const rods = '0123456789'

    let count = 0;

    for(rod of rods) {
        if(rings.includes(`B${rod}`) &&
        rings.includes(`G${rod}`) &&
        rings.includes(`R${rod}`)) {
            count++;
        }
    }

    return count
};

Hash Table을 사용하지않고 해결하는 방법도 있다.
rings를 순회하는 것이 아니라 0부터 9까지의 rod들을 순회하는 것이다.
특정 rod에서 ringsB(rod), G(rod), R(rod)가 존재하는지 확인하는 것이다. 개수는 중요하지않고 모든 색상이 존재하는지만 중요하기 때문이다.

0개의 댓글