Algorithm/릿코드

99클럽 코테 스터디 19일차 1773. Count Items Matching a Rule

Albosa2lol 2024. 6. 17. 17:31

https://leetcode.com/problems/count-items-matching-a-rule/description/

 

규칙에 맞는 항목 수 세기 (Count Items Matching a Rule)

문제 설명:

정해진 규칙에 따라 주어진 항목 목록에서 조건을 만족하는 항목의 수를 세는 문제입니다.

다음과 같은 형식으로 주어진 아이템 리스트가 있습니다:

  • 각 아이템은 [type, color, name] 형태의 문자열 배열로 표현됩니다.
  • 예를 들어, ["phone", "blue", "pixel"]은 유형이 phone, 색상이 blue, 이름이 pixel인 아이템을 나타냅니다.

특정 규칙이 ruleKey와 ruleValue로 주어집니다. ruleKey는 다음 중 하나입니다:

  • "type": 아이템의 유형을 기준으로 필터링합니다.
  • "color": 아이템의 색상을 기준으로 필터링합니다.
  • "name": 아이템의 이름을 기준으로 필터링합니다.

ruleKey와 ruleValue가 주어질 때, 주어진 규칙을 만족하는 항목의 수를 반환하세요.

제약 사항:

  • 1 <= items.length <= 10^4
  • 1 <= items[i].length == 3
  • 1 <= type.length, color.length, name.length, ruleValue.length <= 10
  • items[i][j]와 ruleValue는 소문자 영문자로만 구성됩니다.
  • ruleKey는 "type", "color" 또는 "name" 중 하나입니다.

 

풀이

 

class Solution:
    def countMatches(self, items: List[List[str]], ruleKey: str, ruleValue: str) -> int:
        result = 0
        id = 0
        if ruleKey == "type":
            id = 0
        elif ruleKey == "color":
            id = 1
        else:
            id = 2
        for i in items:
            if i[id] == ruleValue:
                result += 1
        return result

 

풀이

type, color, name 의 인덱스는 순서대로 0,1,2
1. rulekey 값을 확인한다.
2. 그에 맞는 인덱스를 설정한다.
3. 각 키의 인덱스를 확인하고, 일치할 경우 카운팅한다.
4. 카운팅된 값을 리턴한다.