Jewels and Stones - LeetCode
Can you solve this real interview question? Jewels and Stones - 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 kno
leetcode.com
문제
보석인 돌의 종류와 가지고 있는 돌을 나타내는 문자열이 주어진다. 가지고 있는 돌 중 보석인 돌이 몇 개인지 찾아라.
문자는 대소문자를 구분하므로 "a"와 "A" 는 다른 유형의 돌로 간주된다.
과정
- jewels 와 stones 문자열을 입력받는다.
- 파이썬 collections 모듈의 Counter를 사용한다.
- 문자열을 인자로 넘기면 각 문자가 문자열에서 몇 번씩 나타나는지를 알려준다.
입력
jewels = "aA", stones = "aAAbbbb"
출력
3
풀이
from collections import Counter
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
counter = Counter(stones)
answer = 0
for jewel in jewels:
answer += counter[jewel]
return answer
한 줄씩 코드 해석해보기
from collections import Counter
- 파이썬 collections 모듈의 Counter를 사용한다.
counter = Counter(stones)
- Counter 생성자에 문자열을 인자로 넘기면 각 문자가 문자열에서 몇 번씩 나타나는지를 알려주는 객체가 반환된다.
- ex) Counter("hello") >>> Counter({'h' : 1, 'e' : 1, 'l' : 2, 'o' : 1})
answer = 0
for jewel in jewels:
answer += counter[jewel]
return answer
- 입력받은 jewels문자열의 각 요소를 counter key값에 대입하며 value값을 찾아 answer에 저장해준다.
- 모든 jewels를 순환 후 answer 출력
한 줄 풀이
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
return sum(stone in jewels for stone in stones)
- stones 배열에서 for 문을 이용해 stone을 가져오고 그 stone을 jewels 배열에서 찾아서 리스트를 만든 후 더해준다.
'코딩 테스트 (Python) > 리트코드' 카테고리의 다른 글
[리트코드] 347. 상위 K 빈도 요소 (Python) (1) | 2024.01.05 |
---|---|
[리트코드] 3. 중복 문자가 없는 가장 긴 부분 문자열 (Python) (0) | 2024.01.05 |
[리트코드] 739. 일일 온도 (Python) (0) | 2024.01.04 |
[리트코드] 232. 스택을 사용하여 큐 구현하기 (Python) (0) | 2024.01.04 |
[리트코드] 225. 큐를 이용한 스택 구현 (Python) (0) | 2024.01.04 |