오늘의 공부 키워드
- 1773 Count Items Matching a Rule
1773 Count Items Matching a Rule
문제 설명
당신은 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"
- 출력: 1
- 설명: 주어진 규칙과 일치하는 아이템은 ["computer","silver","lenovo"] 하나입니다.
예제 2:
- 입력: items = [["phone","blue","pixel"],["computer","silver","phone"],["phone","gold","iphone"]], ruleKey = "type", ruleValue = "phone"
- 출력: 2
- 설명: 주어진 규칙과 일치하는 아이템은 ["phone","blue","pixel"]와 ["phone","gold","iphone"] 두 개입니다. ["computer","silver","phone"]은 일치하지 않습니다.
코드
def countMatches(items, ruleKey, ruleValue):
# ruleKey에 따른 인덱스를 설정합니다.
index = {"type": 0, "color": 1, "name": 2}[ruleKey]
# 일치하는 아이템의 개수를 셉니다.
count = 0
for item in items:
if item[index] == ruleValue:
count += 1
return count
# 예제 실행
items1 = [["phone","blue","pixel"],["computer","silver","lenovo"],["phone","gold","iphone"]]
ruleKey1 = "color"
ruleValue1 = "silver"
print(countMatches(items1, ruleKey1, ruleValue1)) # 출력: 1
items2 = [["phone","blue","pixel"],["computer","silver","phone"],["phone","gold","iphone"]]
ruleKey2 = "type"
ruleValue2 = "phone"
print(countMatches(items2, ruleKey2, ruleValue2)) # 출력: 2
풀이법
- ruleKey에 따라 인덱스를 설정합니다:
- ruleKey가 "type"이면 인덱스는 0입니다.
- ruleKey가 "color"이면 인덱스는 1입니다.
- ruleKey가 "name"이면 인덱스는 2입니다.
- 각 아이템에 대해 주어진 ruleValue와 일치하는지 확인합니다.
- 일치하는 아이템의 개수를 셉니다.
주요 포인트
- 인덱스 설정: ruleKey에 따라 아이템의 어느 부분을 비교할지 결정하기 위해 인덱스를 설정합니다. 이를 위해 사전(dictionary)을 사용하여 "type", "color", "name"에 대응하는 인덱스를 매핑합니다.
- 아이템 필터링: 각 아이템을 순회하면서 지정된 인덱스의 값이 ruleValue와 일치하는지 확인합니다.
- 카운팅: 일치하는 경우 카운트를 증가시키고, 최종적으로 일치하는 아이템의 개수를 반환합니다.
이 코드 구조는 매우 효율적이고 명확하며, 각 단계에서 무엇을 하는지 쉽게 이해할 수 있습니다.
오늘의 회고
- 부족함을 느끼지만 실력을 늘리는것이 제일 빠른길임을 명심하자
- 새로운 개념을 배울수 있어서 좋았다
- 잘은 못하지만 꾸준히 뭔가를 한다는건 좋았다.
- 계속적으로 습관을 가지자
'python' 카테고리의 다른 글
99클럽 코테 스터디 22일차 TIL (0) | 2024.06.19 |
---|---|
99클럽 코테 스터디 21일차 TIL (0) | 2024.06.18 |
99클럽 코테 스터디 19일차 TIL (0) | 2024.06.16 |
99클럽 코테 스터디 18일차 TIL (1) | 2024.06.15 |
99클럽 코테 스터디 17일차 TIL (0) | 2024.06.14 |