문제 링크 : 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