목록2025/01 (7)
엔지니어 블로그
풀이배열 B에 배열 A의 원소 값이 몇번이나 포함되어 있는지 확인하면 되는 문제다.이 문제는 처음에 for문을 가지고 간단히 구현해봤는데, 정답은 맞았지만 2번의 for문으로 인해 복잡도가 높아져 응답시간이 느린 코드가 되었다. 그래서 솔루션을 살짝 보니 훨씬 간단한 방법이 있었다. 코드#정답코드class Solution: def findThePrefixCommonArray(self, A: List[int], B: List[int]) -> List[int]: n = len(A) ans = [] seen = [0] * (n + 1) common = 0 for i in range(n): if seen[A[i..
풀이words2 의 글자가 words1에 포함되어있는지 확인하면 된다.hash table을 사용하는 것으로 생각하고 문제를 풀었다.사실 기존에 list를 통해 해결하려고 했지만 도저히 풀수가 없어서 hash로 사고를 전환하여 풀었다. 1.words2의 글자들로 출현 빈도가 저장된 hash table을 만든다.2.words1의 단어의 글자들의 출현빈도가 저장된 hash table을 만든다.3.두 hash table을 비교한다. 간단하지만 고민하여 푸는데 시간이 꽤나 소요되었다. 하루하루 문제를 푸니 Medium도 손을 델 순 있는 수준이 되어 가는 것 같아 기분이 좋다. 코드from collections import Counterclass Solution: def wordSubsets(self, wo..
풀이이 문제는 list 내의 각 원소가 서로 포함 관계인지 파악하면 되는 문제였다. 그래서 반복문을 2개 사용하여 각 원소를 비교하되, 길이가 같거나 기준이 되는 원소의 길이가 길다면 pass하도록 설계했다. 한번 에러가 나서 확인해보니 중복값이 들어갈 수 있었다. 그래서 set 자료구조를 활용하여 중복값을 제거하는 방식으로 해결했다. 코드class Solution: def stringMatching(self, words: list[str]) -> list[str]: answer = set([]) length = len(words) for i in range(length): for j in range(length): ..
풀이우선 제시 된 조건처럼 isPrefixAndSuffix를 정의한다. 내부에서는 str1이 str2에 prefix,suffix를 동시에 만족하는지 확인한다. 이후 countPrefixSuffixPairs에서 isPrefixAndSuffix 를 호출하여 가장 앞의 원소와 뒤의 원소들을 차례차례 비교해가며 몇개의 case가 만족하는지 체크하면 된다. 이 문제는 아무 답지의 도움 없이 혼자서 풀어낸 첫 leetcode 문제여서 감회가 새롭다. 열심히 해서 더 높은 레벨의 문제들도 척척 푸는 사람이 되고싶다..!코드class Solution: def countPrefixSuffixPairs(self, words: list[str]) -> int: answer = 0 while l..
풀이주어진 배열 nums 내 각각의 원소들의 차가 k 만큼인 pair의 수를 구하면 된다.int로 초기화 된 dict를 선언한 후 배열 내 값에서 k를 뺴거나 더한 값을 각각 tmp,tmp2에 저장한다.이후 선언해둔 dict에 차가 k 인 pair를 저장하여 그 수를 확인할 수 있게 된다. 코드class Solution: def countKDifference(self, nums: List[int], k: int) -> int: dict = defaultdict(int) cnt = 0 for num in nums: tmp, tmp2 = num+k, num-k if tmp in dict: cnt +=..
풀이본 문제는 Hash를 활용해서 풀었다.dict를 선언한 후 for문을 돌면서 문자열을 key로, count를 value로 저장하게끔 하여 각 문자열이 몇번 나오는지 체크할 수 있도록 풀었다. 코드class Solution: def areOccurrencesEqual(self, s: str) -> bool: dict = {} for i in s: if i in dict: dict[i] += 1 else: dict[i] = 1 return True if len(set(dict.values())) == 1 else False