반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

멋진 개발자가 되고 싶다

[LeetCode,Python] 771. 보석과 돌(Jewels and Stones) 본문

Algorithm Study/leetcode

[LeetCode,Python] 771. 보석과 돌(Jewels and Stones)

오패산개구리 2021. 7. 17. 17:23
728x90
반응형

You're given strings jewels representing the types of stones that are jewels, and stones representing the stones you have. Each character in stones is a type of stone you have. You want to know how many of the stones you have are also jewels.

 

Letters are case sensitive, so "a" is considered a different type of stone from "A".

 

Input: jewels = "aA", stones = "aAAbbbb"

 

Output: 3

 

 

** 깔끔한 답안 **

 

1. 해시 테이블을 이용한 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution:
    def numJewelsInStones(self, jewels: str, stones: str-> int:
        table = {}
        count = 0
 
        for stone in stones:
            if stone not in table:
                table[stone] = 1
            else:
                table[stone] += 1
 
        for jewel in jewels:
            if jewel in table:
                count += table[jewel]
 
        return count
cs

 

해설:

 

꼭 해시 함수로 인덱스 처리를 해주지 않아도 해시 테이블이라고 하는 것 같다.

 

이 정도는 바로 떠올릴 수 있을 듯.

 

 

 

 

 

2. defaultdict를 이용한 비교 생략

 

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
    def numJewelsInStones(self, jewels: str, stones: str-> int:
        table = collections.defaultdict(int)
        count = 0
 
        for stone in stones:
            table[stone] += 1
 
        for jewel in jewels:
                count += table[jewel]
 
        return count
cs

 

해설:

 

table에 있는지 체크하는 과정을

defaultdict를 추가하여 없애주었다.

 

 

 

 

3. Counter로 계산 생략

 

1
2
3
4
5
6
7
8
9
class Solution:
    def numJewelsInStones(self, jewels: str, stones: str-> int:
        table = collections.Counter(stones)
        count = 0
 
        for jewel in jewels:
                count += table[jewel]
 
        return count
cs

 

해설:

 

Counter를 이용하여 개수를 세는 과정까지 없애버렸다!

 

 

 

 

4. 파이썬다운 방식

 

1
2
3
class Solution:
    def numJewelsInStones(self, jewels: str, stones: str-> int:
        return sum(stone in jewels for stone in stones)
cs

 

해설:

 

홀리 쓋...

 

 

 

 

 

 

[출처: 파이썬 알고리즘 인터뷰(박상길 지음/ 정진호 일러스트/ 책만 출판사)] 

728x90
반응형