LeetCode 771. Jewels and Stones

개발공부를해보자·2025년 1월 19일

LeetCode

목록 보기
29/95

파이썬 알고리즘 인터뷰 문제 29번(리트코드 771번) Jewels and Stones
https://leetcode.com/problems/jewels-and-stones/

나의 풀이

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        
        counter = collections.Counter(stones)
        count = 0

        for jewel in jewels:
            count += counter[jewel]
        
        return count
  • Counter대신 dict이나 defaultdict 을 이용해서 직접 세어도 된다.

다른 풀이

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        return sum([stone in jewels for stone in stones])
  • 리스트 컴프리헨션을 이용해서 푼 파이썬스러운 풀이

나의 풀이(3회독, 정규식)

  • 정규식을 이용할 수 있다!
  • 정규식 패턴에 변수를 전달하는 것이 생소했는데 아래 글에 자세히 정리하였다.
class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        return len(re.sub(f'[^{jewels}]', '', stones))

정규식 pattern 에 변수 사용하기

profile
개발 공부하는 30대 비전공자 직장인

0개의 댓글