본문 바로가기
LeetCode

1773. Count Items Matching a Rule

by 싼쵸 2022. 6. 13.
반응형

문제

Rule Key와 Rule Value에 따라서 일치하는 조건에 맞는 개수를 리턴해주는 문제다.

나의 현재 풀이

/**
 * @param {string[][]} items
 * @param {string} ruleKey
 * @param {string} ruleValue
 * @return {number}
 */
var countMatches = function(items, ruleKey, ruleValue) {
    let cnt = 0;          
    let idx =  0
    for(let i of items){
        switch(ruleKey){
            case 'type': idx = 0;
                break;
            case 'color': idx = 1;
                break;
           default : idx = 2;
        }
            if(i[idx] === ruleValue) cnt++                        
}
    return cnt
};

초기에 rule만 가지고 풀이했더니, 역시나 다른 케이스에 걸려서 실패했다. 그래서 switch문을 추가해서 rulekey에 따라서 인덱스 번호를 받았고, 그 후 비교를 해서 참이면 cnt ++ 를 해주어서 풀이에 성공했다.

나의 예전 풀이

/**
 * @param {string[][]} items
 * @param {string} ruleKey
 * @param {string} ruleValue
 * @return {number}
 */
let countMatches = function(items, ruleKey, ruleValue) {
    let com;
    let cnt =0;
    if(ruleKey == 'type'){
        com = 0;
    }else if(ruleKey == 'color'){
        com = 1;
    } else {
        com = 2;
    }
    
    items.map((a,idx) =>{
        items[idx][com] == ruleValue ? cnt++ : null
    })
    return cnt
    
};

요즘 항상 느끼는 것이지만, 다시 내가 했던 풀이와 현재 나의 풀이를 비교하는 재미가 꽤 쏠쏠하다. 마치 과거의 나와 소통하는 느낌이다. 그리고 뭔가 성장한 것 같은 느낌이 들어서 기분도 꽤 좋은 편이다.

다른 사람 풀이

const RULE_IDX = {
    'type': 0,
    'color': 1,
    'name': 2
};

var countMatches = function(items, ruleKey, ruleValue) {
    return items.reduce((ans, item) => item[RULE_IDX[ruleKey]] === ruleValue ? ans + 1 : ans, 0);
};

이번풀이는 훨씬 간결해줬다. 객체를 아예 만들어서 비교를 하는 데 사용했다. 그리고 reduce를 사용해서 변수 선언과 반복문을 한 번에 해결한 게 간결해 보이는 풀이에 큰 도움을 줬다고 생각한다. 확실히 다른 사람들 풀이을 보면, 정말 어떻게 이렇게 생각했지??라는 감탄을 하고 간다. 오늘 1 감탄 하나 적립하고 간다.

 

결과

반응형

'LeetCode' 카테고리의 다른 글

1588. Sum of All Odd Length Subarrays  (0) 2022.06.15
1791. Find Center of Star Graph  (0) 2022.06.13
1859. Sorting the Sentence  (0) 2022.06.12
1221. Split a String in Balanced Strings  (0) 2022.06.10
1389. Create Target Array in the Given Order  (0) 2022.06.09

댓글