//GitHub https://github.com/vellimole0621
383. Ransom Note
Given two strings ransomNote and magazine, return true if ransomNote can be constructed by using the letters from magazine and false otherwise.
Each letter in magazine can only be used once in ransomNote.
=> 두 문장에서 한 문장 내의 문자를 하나씩만 써서 다른 문자열을 완성시킬 수 있는가?
내 풀이
:
문장을 배열로 바꾸고, 그 배열 내에서 하나씩 비교해서. 같은게 있으면 배열에서 없애는 방식
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
global num
ransomNote_list = list(ransomNote)
magazine_list = list(magazine)
if len(ransomNote_list) > len(magazine_list):
return False
else:
for i in range(0, len(ransomNote_list)):
for j in range(0, len(magazine_list)):
num = 1
if ransomNote_list[i] == magazine_list[j]:
num = -1
magazine_list.pop(j)
break
if num == 1:
break
if num == 1:
return False
else:
return True
더 나은 풀이(leetcode 참조)
:
count 함수 사용 => count("")하면 리스트 내의 해당 문자의 갯수를 알려준다. 그래서 두 문자열에서 같은 문자가 있는 지 확인하고. 있으면 그 문자를 없애고 없으면 False를 return하는 방식
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
checkLen = len(ransomNote)
if len(magazine)<len(ransomNote):
return False
else:
for i in set(ransomNote):
if checkLen>0:
if i in magazine:
if magazine.count(i)>=ransomNote.count(i):
checkLen-=ransomNote.count(i)
else:
return False
else:
return False
return True if checkLen <= 0 else False
'프로그래밍 > Python' 카테고리의 다른 글
[파이썬 Python/알고리즘] LeetCode - Find Numbers with Even Number of Digits (0) | 2023.08.29 |
---|---|
[파이썬 Python/알고리즘] LeetCode - Max Consecutive Ones (0) | 2023.08.28 |
[파이썬 Python/알고리즘] LeetCode - Number of Steps to Reduce a Number to Zero (0) | 2023.07.31 |
[파이썬 Python/알고리즘] LeetCode - Fizz Buzz (0) | 2023.07.31 |
[파이썬 Python/알고리즘] LeetCode - Richest Customer Wealth (0) | 2023.07.30 |