[Leetcode] 1773. Count Items Matching a Rule (JS)

OROSY·2021년 4월 30일
0

Algorithms

목록 보기
14/38
post-thumbnail

출처

1773. Count Items Matching a Rule

문제

나의 코드

오랜 시간 동안 고민을 해봤지만, 배열이 여러 개 겹쳐있는 것이 아직 익숙치 않아서 기본적인 내용으로 풀이를 진행했다. rulekey 값을 변수로 지정하는 것이 좋을 것 같은데? 라는 고민을 계속 해도 해결이 되지 않아서 아래처럼 풀이를 했는데 역시나 남들은 어찌나 그렇게 간단하고 명쾌한 코드를 작성하는지..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var countMatches = function(items, ruleKey, ruleValue) {
    let result = 0
    if (ruleKey === 'type') {
        for (i = 0; i < items.length; i++) {
            if (ruleValue === items[i][0]) {
              result++  
            }
        }    
    } else if (ruleKey === 'color') {
        for (i = 0; i < items.length; i++) {
            if (ruleValue === items[i][1]) {
              result++  
            }
        }
    } else {
        for (i = 0; i < items.length; i++) {
            if (ruleValue === items[i][2]) {
              result++  
            }
        } 
    }
        return result
};
cs

다른 코드

아래 코드처럼 객체로 넣을 생각을 하긴 했지만, 거기서 더이상 사고가 더 나아가지 못했다ㅠ 그리고 중요한 것은 item[types[ruleKey]] === ruleValue 이러한 코드를 짤 수 있도록 객체의 개념에 익숙해져야하는데 아직은 그렇게까진 안되는 것 같다. 이런 좋은 코드를 여러번 봐야할듯!

1
2
3
4
5
6
7
8
9
10
11
var countMatches = function(items, ruleKey, ruleValue) {
    const types = {
        "type"0,
        "color"1,
        "name"2
    }
    
    return items.filter((item) => {
        return item[types[ruleKey]] === ruleValue;
    }).length;
};
cs

실행 결과

profile
Life is a matter of a direction not a speed.

0개의 댓글