Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 개발자이력서
- 코딩테스트
- #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #react 강의
- 베어유
- 개발자
- 클래스
- 패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #react 강의
- 빡공단후기
- 챌린지
- 빡공단
- jemini
- 개발자포트폴리오
- 후기
- 회고록
- 개발자취업
- 성장
- 자기계발
- BEARU
- 출처
- 개발자취준
- 합격후기
- 동기부여
- 항해99
Archives
- Today
- Total
뚠뚜 개발일지
[leetCode] 771. jewels and Stones 본문
문제
문제 해설
1. 보석(jewels)과 돌(stones)이라는 문자열이 제공된다.
2. 문자열 돌 중에 보석이 몇개 있는지 출력한다.
3. 소문자와 대문자는 서로 다른 종류의 돌로 간주한다.
문제 풀이
class Solution:
def numJewelsInStones(self, jewels: str, stones: str) -> int:
jewels_set = set(jewels) # 해시 셋을 생성하여 효율적인 검색을 위한 자료구조로 사용
count = 0
for stone in stones :
if stone in jewels_set : # 돌이 보석인지 상수 시간 내에 확인
count += 1
return count
설명:
- 해시 셋 생성:
- jewels_set이라는 집합을 생성하여 고유한 보석을 저장합니다. 파이썬에서 집합은 해시 테이블로 구현되며, in 연산자를 사용하여 빠른 멤버십 검사를 제공합니다.
- stones 문자열의 각 문자 (stone)를 순회합니다.
- stone이 보석인지 확인합니다.
- 현재 stone이 jewels_set에 있는지 in 연산자를 사용하여 효율적으로 확인합니다. 해시 테이블의 구조로 인해 이 검색은 상수 시간에 수행됩니다.
- 보석을 세웁니다.
- stone이 실제로 보석이라면 count를 1 증가시킵니다.
- 모든 돌을 순회한 후 발견한 보석의 최종 개수 count를 반환합니다.
핵심 포인트:
- 해시 테이블: 효율적인 멤버십 검사에 탁월하여 이 문제에 이상적입니다.
- 시간 복잡도: O(m + n), 여기서 m은 jewels의 길이이고 n은 stones의 길이입니다.
- 공간 복잡도: jewels_set을 저장하기 위한 O(m)