[leetcode] 771.Jewels and Stones(easy)

Erdos·2024년 2월 2일
0

코딩테스트

목록 보기
9/20

🎶 hash table

  • runtime이 달라지고 있지만, 실행 속도는 대체적으로 비슷...
  • leetcode에서 발견한 새로운 장점: 여러 풀이를 각각 실행해 보고, 이전의 풀이를 언제든 소환할 수 있다.

문제

https://leetcode.com/problems/jewels-and-stones/

풀이

1. 해시 테이블

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        freqs = {}
        count = 0

        for char in stones:
            if char not in freqs:
                freqs[char] = 1
            else:
                freqs[char] += 1

        for char in jewels:
            if char in freqs:
                count += freqs[char]

        return count

🔹stones에서 문자 단위로 하나씩 분리, 반복. 처음 등장한 문자라면 1, 기존에 있던 문자가 등장한다면 +1 -> 각 문자별 빈도 수 저장

2. Counter

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        freqs = collections.Counter(stones)
        count = 0
        for char in jewels:
            count += freqs[char]
        return count

3. 파이썬다운 방식(python way)

  • 한 줄 풀이
  • 리스트 컴프리헨션
class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        return sum(stones in jewels for stones in stones)

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글