๐Ÿ“– Jewels and Stone

๐Ÿ“–What I thought

  • ํŒŒ์ด์ฌ์—” in/not in ๊ฐ™์€ ์•„์ฃผ ์ข‹์€ ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ ๊ทธ๊ฑฐ ์‚ฌ์šฉํ•˜์ž
  • stones for๋ฌธ ๋Œ๋ฉด์„œ jewels์— ์žˆ์œผ๋ฉด cnt++

๐Ÿ“–ํ’€์ด

๐Ÿ“Žํ•œ ์ค„ ํ’€์ด

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        return sum(s in jewels for s in stones)
  • ์žˆ์œผ๋ฉด cnt ++ ์—†์œผ๋ฉด pass
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด๊ฑฐ๋ณด๋‹ค ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ฐ€๋Šฅํ–ˆ์Œ โ†’ sum()
  • sum()์„ bool ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ์™€ ์“ฐ๋ฉด True์˜ ๊ฐœ์ˆ˜๋ฅผ return

๐Ÿ“ŽDictionary

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        hs = dict()
        
        for stone in stones:
            hs[stone] = hs.get(stone, 0) + 1
 
        cnt = 0
        for jewel in jewels:
            if jewel in hs:
                cnt += hs[jewel]
 
        return cnt
  • {๋Œ ์ข…๋ฅ˜ : ๋Œ ๊ฐœ์ˆ˜}
  • defaultDict()์ด ์•„๋‹ˆ๋ฏ€๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ‚ค์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•จ

๐Ÿ“ŽCounter

from collections import Counter
 
class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        stone = Counter(stones)
        
        cnt = 0
        for j in jewels:
            cnt += stone[j]
 
        return cnt
  • stones์˜ ๊ฐ ๋ฌธ์ž๊ฐ€ ํ•˜๋‚˜์˜ ๋Œ์ด๋ฏ€๋กœ Counter๋กœ ๊ฐ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜ ์ฒดํฌ
  • Counter๋Š” ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌ ํ•„์š”๋„ ์—†์Œ ( โˆต ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ‚ค์— ๋Œ€ํ•ด์„œ๋Š” 0์„ return)

๐Ÿ“–What I learned

  1. ํŒŒ์ด์ฌ์—” in/not in ๊ฐ™์€ ์•„์ฃผ ์ข‹์€ ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ ๊ทธ๊ฑฐ ์‚ฌ์šฉํ•˜์ž
  2. Counter๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ‚ค์— ๋Œ€ํ•ด KeyError๊ฐ€ ์•„๋‹ˆ๋ผ 0์„ return
  3. sum() ์„ bool ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ์™€ ์“ฐ๋ฉด True์˜ ๊ฐœ์ˆ˜๋ฅผ return

๐Ÿ“–๊ด€๋ จ ์ง€์‹

๐Ÿ“ŽHash Table

๐Ÿ“ŽDictionary

๐Ÿ“ŽCounter