383. Ransom Note

Doyeon Kim·2022년 6월 20일

코딩테스트 공부

목록 보기
83/171

문제 링크 : https://leetcode.com/problems/ransom-note/


magazine에 있는 글자들로 ransomNote 를 만들수 있으면 true 없으면 false를 반환하는 문제이다.

파이썬 내부의 counter함수를 이용하여 풀었다.

    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        ran = collections.Counter(ransomNote)
        mag = collections.Counter(magazine)
        
        for i in ran:
            if i not in mag or ran[i]>mag[i]:
                return False
        return True

ransomNote와 magazine의 글자들을 counter를 이용하여 파악(?)한 뒤
ex. ransomNote = aa 이면 a :2개
magazine = aab 이면 a:2,b:1

만약 ran 안에 있는 i가 mag에 없거나 mag에 있는 개수보다 크다면 mag를 이용하여 ran을 만들 수 없으므로 false를 반환한다.
그렇지 않으면 True를 반환한다.


22.08.25

다시 복습

counter함수를 이용하여 풀었다.
그 다음 example 테.케에서도 나와있듯이 False가 나올 수 있는 경우들:
1. 랜섬노트에 있는 글자들이 매거진에 없는 경우
ransomNote = "a", magazine = "b"
2. 랜섬노트에 있는 글자들이 더 많아서 만들 수 없는 경우:
ransomNote = "aa", magazine = "ab"

들에는 False를 반환하도록 하고
이외의 경우에는 true를 반환하도록 한다.

  from collections import Counter
        
        r = Counter(ransomNote)
        m = Counter(magazine)
        
        for i in r:
            if i not in m or r[i]>m[i]:
                return False
        return True
profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글