Count Items Matching a Rule

제로콜라좋아요·2024년 6월 17일
0

algorithem

목록 보기
29/37

문제풀이

배열 items가 주어졌습니다. 각 items[i] = [typei, colori, namei]는 i번째 항목의 유형, 색상 및 이름을 설명합니다. 또한 두 개의 문자열, ruleKey와 ruleValue가 주어집니다.

i번째 항목이 다음 중 하나가 참이면 규칙에 일치한다고 합니다:

•	ruleKey == “type”이고 ruleValue == typei인 경우.
•	ruleKey == “color”이고 ruleValue == colori인 경우.
•	ruleKey == “name”이고 ruleValue == namei인 경우.

주어진 규칙에 일치하는 항목의 수를 반환합니다.

예시 1:

items = [["phone", "blue", "pixel"], ["computer", "silver", "lenovo"], ["phone", "gold", "iphone"]],
ruleKey = "color",
ruleValue = "silver"

설명: 주어진 규칙에 일치하는 항목은 [“computer”, “silver”, “lenovo”] 하나뿐입니다.

예시 2:

items = [["phone", "blue", "pixel"], ["computer", "silver", "phone"], ["phone", "gold", "iphone"]],
ruleKey = "type",
ruleValue = "phone"

설명: 주어진 규칙에 일치하는 항목은 [“phone”, “blue”, “pixel”]와 [“phone”, “gold”, “iphone”] 두 개입니다. [“computer”, “silver”, “phone”]는 일치하지 않습니다.

제약사항:

•	1 <= items.length <= 10^4
•	1 <= typei.length, colori.length, namei.length, ruleValue.length <= 10
•	ruleKey는 “type”, “color”, 또는 “name” 중 하나입니다.
•	모든 문자열은 소문자로만 구성됩니다.

문제풀이

class Solution:
    def countMatches(self, items: List[List[str]], ruleKey: str, ruleValue: str) -> int:
        # Determine the index to check based on the ruleKey
        key_index = {"type": 0, "color": 1, "name": 2}[ruleKey]
        
        # Count how many items match the ruleValue at the given index
        count = sum(1 for item in items if item[key_index] == ruleValue)
        
        return count

<내 코드의 흐름>

  1. countMatches라는 메소드를 정의합니다.
  • 이 메소드는 items (문자열 리스트의 리스트), ruleKey (문자열), ruleValue (문자열)를 인자로 받고 정수(int)를 반환합니다.
  1. ruleKey가 “type”, “color”, “name” 중 어떤 값인지에 따라 인덱스를 결정합니다.
  • “type”은 0, “color”는 1, “name”은 2로 매핑됩니다.
  1. 각 item에 대해 item의 key_index 위치의 값이 ruleValue와 일치하면 1을 더하는 방식으로 일치하는 항목의 수를 셉니다.
  • sum 함수는 이러한 값들을 모두 더해줍니다.
  1. 일치하는 항목의 총 수를 반환합니다.
profile
개발자계의 제로콜라

0개의 댓글