Jewels and Stones (Hash Table)

하루히즘·2021년 4월 21일
0

LeetCode

목록 보기
3/17

설명

LeetCode의 Jewels and Stones 문제다.

문자열로 주어지는 '돌'과 '보석'을 비교해서 얼마나 많은 보석이 돌에 포함되어 있는지 확인하는 문제다. 예를 들어 "aaaaAb"같은 문자열로 돌이 주어졌을 때 "ab"처럼 보석이 주어졌다면 현재 돌 중에는 'a', 'b'라는 보석이 들어있으므로 총 2개의 보석이 들어있다고 반환하면 된다.

풀이

이 문제는 사전 자료형(dict)을 이용하면 어렵지 않게 풀 수 있다. 문제에서 나에게 주어지는 것은 '돌'이라고 말하고 있지만 어쨌든 세야하는건 이 돌 중에 보석이 몇 개나 있는지기 때문에 보석을 기준으로 사전 자료형을 구축한다.

그리고 모든 돌을 확인하면서 이 보석 사전에 있는 돌이라면, 즉 보석이라면 보석의 갯수를 증가시키는 방향으로 구현할 수 있을 것이다.

이를 기반으로 작성한 코드는 다음과 같다.

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        jewelMatcher = dict()
        for jewel in jewels:
            jewelMatcher[jewel] = 0
            
        for stone in stones:
            if stone in jewelMatcher:
                jewelMatcher[jewel] += 1
                
        return sum(jewelMatcher.values())

후기

이 문제는 어디선가 본 적이 있지 않았나 생각이 들었는데 학교다닐 때 자바 수업시간에 풀었던 문제였다. 교수님이 LeetCode의 문제들을 좋아하던 분이셨는데 아마 그래서 기말고사 때 코딩 테스트를 보면서 이 문제를 냈던 것으로 기억한다.

profile
YUKI.N > READY?

0개의 댓글