Find Words Containing Character & Count Items Matching a Rule

Guk's.velog·2024년 6월 17일
0

코딩테스트

목록 보기
16/22

문제 : Find words Containing Character

문자열 배열 n개와 단일 문자를 주고 배열의 문자열에서 단일 문자의 값을 포함하는 index들을 return하는 문제이다.

풀이

var findWordsContaining = function(words, x) {
    let res = []

    //배열을 순회하면서
    for(let i = 0 ; i < words.length ; ++i){
      	//문자열에 x 문자가 포함되어있는지 확인
        if(words[i].includes(x)) {
          	//배열에 추가
            res.push(i)
            continue
        }
    }

    return res
};

문제 : Count items Matching a Rule

[Type,Color,Name]으로 이루어진 n개의 배열과, 어느 키를 기준으로할지에 해당하는 ruleKey, 만족하는 값은 어떤것인지에 해당하는 ruleValue
이렇게 3개의 값을 주고 조건을 만족하는 개수를 카운팅해서 return하는 문제이다.

풀이

var countMatches = function(items, ruleKey, ruleValue) {
  	//조건에 만족하는 경우에 따라 filtering 해서 length로 return
    return items.filter((arr) => ruleKey === "type" ? 
                        arr[0] == ruleValue : ruleKey === "color" ? 
                        arr[1] == ruleValue : arr[2] == ruleValue).length
};

느낀점

다른 사람들의 풀이를 확인했을 때 ruleKey에 해당하는 값들을 dictionary로 세팅하고, filter를 호출하는 부분을 간단히 하였다

var countMatches = function(items, ruleKey, ruleValue) {
    const objectMatch = {
        type: 0,
        color: 1,
        name: 2
    };
    const intemsFilter = items.filter(ele => ele[objectMatch[ruleKey]] === ruleValue );
    return intemsFilter.length;
};

그로 인해 좀 더 깔끔하고 가독성 있는 코드로 구성하였다. key값들은 dictinary를 활용한 방법을 생각해내자.

0개의 댓글