본문 바로가기
Leetcode

[LeetCode] Ransom Note 파이썬 (dict, set, count)

by YGSEO 2021. 4. 14.
728x90
from collections import defaultdict
class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        seen = defaultdict(int)
        for r in ransomNote:
            seen[r] += 1
        
        for m in magazine:
            if m in seen:
                seen[m] -= 1
        
        for v in seen.values():
            if v > 0:
                return False
        return True

"fihjjjjei"
"hjibagacbhadfaefdjaeaebgi"

 

defaultdict(<class 'int'>, {'f': -1, 'i': 0, 'h': -1, 'j': 2, 'e': -2})

 

seen 이라는 dict에 0보다 큰 value가 남아있는 경우

ransomNote에 아직 string이 남아 있다는 뜻이기 때문에

루프 탈출


다른 풀이

set 과 count를 사용

class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        c = set(ransomNote)
        for x in c:
            if ransomNote.count(x) > magazine.count(x):
                return False
        return True

 

728x90

댓글