전체 글 50

(간단한 코드)리트코드 1189. Maximum Number of Balloons

주어진 문자열 text에 있는 알파벳으로 balloon을 몇개 만들 수 있는지 물어보는 문제이다.  물론 처음에 생각을 할때, 리스트를 만들고, 줄여나가는 방식을 생각하는 사람들도 있을 것이다. 코드를 복잡하게 짜는 경험을 하는 것은 정말로 값지 경험이지만, 거기서 만족을 하면 안된다는 점이 있다.  우선 이것을 하기 위해서는 딕셔너리가 가장 효율적이다.  위에 있는 이 딕셔너리 모습이, 하나의 balloon을 만들 수 있는 최소 조건이다. 그렇다면, 아래와 같이 무작위로 있는 경우, 무엇을 판단을 할까? 그림에도 적었듯이, 가장 작은 수를 기준으로 선발을 하면 된다. 코드는 다음과 같다.class Solution: def maxNumberOfBalloons(self, text: str) -> in..

(간단한 코드)리트코드 242. Valid Anagram

우선 "아나그램"의 정의는 하나의 문자열의 순서를 바꾸어서 새로 만들어진 문자열을 의미한다. 따라서 t라는 문자열에 있는 요소들로 s를 만들 수 있는지 물어본다.  여기서는 두개의 문자열의 요소가 일치하는지만 확인하면 된다.  이를 가장 빨리 확인할 수 있는 방법이 딕셔너리를 활용하는 방법인데,  단순하게 딕셔너리를 개별적으로 (s에 관한 딕셔너리 만드는 for문 하나, t에 관한 딕셔너리 만드는 for문 하나) 만들어도 되지만 단순하게 여러번 만드는것은 크게 의미가 없으니까, 파이썬 내장함수인 "defaultdict"에 관해 배워 보겠다.h = {}for chr in s: if chr in h: h[chr] += 1 else: h[chr] = 0이게 우리가 알고 있는 일반적으로..

(간단한 코드)리트코드 383. Ransom Note

이 문제는 다음과 같다. magazine이라는 문자열에 있는 문자들로 ransomNote의 문자열을 만들 수 있는가이다.여기서 주의해야 할 점은 magazine의 문자열들은 각각 "한번씩"만 사용할 수 있다는 점이다. 그렇다면, 개수에 한계가 있다는 것을 들었을 때는 무조건 딕셔너리를 사용해야 한다(이를 해쉬맵 이라고도 부른다). 우선 magazine문자열 이용해 딕셔너리로 만들어주고, 만들어진 딕셔너리와 ransomNote의 문자열을 비교해서, 성립하는지 확인 하면 된다.class Solution: def canConstruct(self, ransomNote: str, magazine: str) -> bool: if len(ransomNote) > len(magazine): retur..