99클럽 코테 스터디 26일차 TIL + 문자열

Boxx-Ham·2024년 6월 17일
0

99TIL

목록 보기
19/19
post-thumbnail

1. 오늘의 문제

Count Items Matching a Rule

2. 문제 분석

  • items : 문자열 배열
  • items[i] = [type_i, color_i, name_i]
  • ruleKey의 ruleValue에 해당하는 item의 개수 리턴
    • ruleKey == "type" and ruleValue == type_i.
    • ruleKey == "color" and ruleValue == color_i.
    • ruleKey == "name" and ruleValue == name_i.

  • Example 1
    • Input: items = [["phone","blue","pixel"],["computer","silver","lenovo"],["phone","gold","iphone"]], ruleKey = "color", ruleValue = "silver"
    • Output: 1
    • Explanation: There is only one item matching the given rule, which is ["computer","silver","lenovo"].
  • Example 2
    • Input: items = [["phone","blue","pixel"],["computer","silver","phone"],["phone","gold","iphone"]], ruleKey = "type", ruleValue = "phone"
    • Output: 2
    • Explanation: There are only two items matching the given rule, which are ["phone","blue","pixel"] and ["phone","gold","iphone"]. Note that the item ["computer","silver","phone"] does not match.

3. 문제 풀이

  1. ruleKey에 해당하는 인덱스를 먼저 구하기
  2. 향상된 for 문을 사용해서 item[인덱스]가 ruleValue에 해당하는지 확인하고
  3. 해당하면 count를 +1 하면 됨
  4. count 리턴

4. 구현 코드

class Solution {
    public int countMatches(List<List<String>> items, String ruleKey, String ruleValue) {
        // ruleKey의 ruleValue에 해당하는 item의 개수 리턴

        /**
        items 리스트의 구조
        items = [type, color, name]
        items[i] = [type_i, color_i, name_i]

        ruleKey와 ruleValue의 관계
        ruleKey == "type" and ruleValue == type_i.
        ruleKey == "color" and ruleValue == color_i.
        ruleKey == "name" and ruleValue == name_i.
        */

        int count = 0;
        int idx = 0;

        // ruleKey에 해당하는 인덱스를 먼저 구하기
        switch(ruleKey) {
            case "type":
                idx = 0;
                break;
            case "color":
                idx = 1;
                break;
            case "name":
                idx = 2;
                break;
        }

        // 향상된 for 문을 사용해서 item[인덱스]가 ruleValue에 해당하는지 확인
        for (List<String> item : items) {
            if (item.get(idx).equals(ruleValue)) {
                count++;   // 해당하면 count를 +1 하면 됨
            }
        } 
        // count 리턴
        return count;
    }
}

5. 오늘의 회고

  • 쉬웠다. 빨리 해결할 수 있게 되었다.
  • 근데 List랑 Array랑 메소드가 다르다 보니 좀 헷갈렸다.
  • 여기서 point는 문자열 비교인 것 같다. 그래서 .equals()로 비교할 수 있으면 어떻게든 풀 수 있는 문제같다.

#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL

0개의 댓글