일단 대소문자 구분하는데
jewels에 있는게 한 묶음으로 보석이 아니라, 개별적으로 보석인거
방법 1 (내가푼)
방법 2
from collections import Counter
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
# 1-1) 내가 푼 방식 1 - Counter 사용 (책 솔루션과 동일)
ans = 0
c = Counter(stones) # Counter({'b': 4, 'A': 2, 'a': 1})
for i in jewels:
ans += c[i]
return ans
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
return len([i for i in jewels for j in stones if i == j])
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
freqs = {}
ans = 0
# 돌(s)의 빈도수 계산 = Counter 직접구현 (= 딕셔너리 생성 방법 중요!)
for char in stones:
if char not in freqs: # 없으면 새롭게 추가
freqs[char] = 1
else:
freqs[char] += 1
# 보석(j)의 빈도수 합산
for char in jewels:
if char in freqs:
ans += freqs[char]
return ans
from collections import defaultdict
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
freqs = defaultdict(int)
ans = 0
# 돌(s)의 빈도수 계산 = Counter 직접구현 (= 딕셔너리 생성 방법 중요!)
for char in stones:
freqs[char] += 1
print(freqs)
# 보석(j)의 빈도수 합산
for char in jewels:
ans += freqs[char]
return ans
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
return sum(i in jewels for i in stones)