반응형

리트코드 9

[파이썬 알고리즘 인터뷰] 31. 상위 K 빈도 요소

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 31. 상위 K 빈도 요소 leetcode 346. Top K Frequent Elements 문제입니다. leetcode.com/problems/top-k-frequent-elements/ 풀이 1. 우선순위 큐 이용 파이썬에서 우선순위 큐는 heapq 모듈을 사용합니다. nums의 빈도수를 Counter 모듈로 저장한뒤에, heapq에 빈도수를 음수로 저장합니다. heapq는 최소합을 제공하므로 음수로 저장해야 합니다. k번 반복하여 heapq를 pop하면 빈도수가 많은 요소순대로 추출이 됩니다. def topKFrequent(self, nums, k): f..

Python/알고리즘 2021.03.05

[파이썬 알고리즘 인터뷰] 29. 보석과 돌

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 29. 보석과 돌 leetcode 771. Jewels and Stones 문제입니다. leetcode.com/problems/jewels-and-stones/ 풀이 1. 한줄 풀이 def numJewelsInStones(self, J, S): return sum(s in J for s in S) S에 있는 char을 하나씩 꺼내면서 J에 있는 char이면 True를 반환합니다. sum 함수로 True의 개수를 다 더합니다. 2. Counter 이용 def numJewelsInStones(self, J, S): freqs = collections.Counter(..

Python/알고리즘 2021.03.05

[파이썬 알고리즘 인터뷰] 22. 일일 온도

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 22. 일일 온도 리트코드 739. Daily Temperatures 문제입니다. leetcode.com/problems/daily-temperatures/ 풀이 stack에 인덱스를 저장하고 현재 인덱스에 해당하는 온도가 stack[-1] 인덱스에 해당하는 온도보다 크면 stack에서 값을 꺼내서 인덱스 차이를 계산합니다. def dailyTemperatures(self, T): answer = [0] * len(T) stack = [] for i, t in T: while stack and T[stack[-1]] < t: last = stack.pop() a..

Python/알고리즘 2021.02.24

[파이썬 알고리즘 인터뷰] 20. 유효한 괄호

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 20. 유효한 괄호 리트코드 20. Valid Parentheses 문제입니다. leetcode.com/problems/valid-parentheses/ 풀이 매핑 테이블을 만들어 놓고 테이블에 존재하지 않으면 푸시하고, 팝했을 때 결과가 일치하지 않으면 False를 리턴하도록 구현한 풀이입니다. def isValid(self, s): table = { ')':'(', ']':'[', '}':'{', } stack = [] for char in s: if char not in table: stack.append(char) elif not stack or tabl..

Python/알고리즘 2021.02.21

[파이썬 알고리즘 인터뷰] 15. 역순 연결 리스트

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 15. 역순 연결 리스트 리트코드 206. Reverse Linked List 문제입니다. leetcode.com/problems/reverse-linked-list/ 풀이 node가 node.next로 이동함과 동시에 node.next를 prev로 연결합니다. def reverseList(self, head): rev, node = None, head while node: rev, rev.next, node = node, rev, node.next return rev

Python/알고리즘 2021.02.15

[파이썬 알고리즘 인터뷰] 8. 빗물 트래핑

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 8. 빗물 트래핑 리트코드 42번 문제입니다. leetcode.com/problems/trapping-rain-water/ 풀이 hard 문제답게 손도 못대보았습니다. 책에는 두 가지 풀이법이 제시되었습니다. 1. 투포인터를 활용한 풀이 양쪽의 포인터가 제일 높은 높이를 향해서 한 칸씩 이동합니다. 이동하면서 이전 값과 현재 값의 차이로 물의 양을 계산합니다. def trap(self, height): if not height: return 0 left, right = 0, len(height)-1 left_max, right_max = height[left],..

Python/알고리즘 2021.02.12

[파이썬 알고리즘 인터뷰] 5. 그룹 애너그램

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 5. 그룹 애너그램 리트코드 49번 문제입니다. leetcode.com/problems/group-anagrams/ 풀이 dictionary의 키에 정렬된 strs 입력하고 값을 정렬되지 않은 strs 입력한다는게 신선했습니다. sorted 함수는 list 값을 반환하므로 딕셔너리의 key로 지정할 수 없습니다. 따라서 join 함수로 리스트를 제거하여 key로 입력합니다. def groupAnagrams(self, strs): anagrams = collections.defaultdict(list) for word in strs: # list 벗기기 위해 .join 이용 anagrams[''.join(s..

Python/알고리즘 2021.02.09

[파이썬 알고리즘 인터뷰] 4. 가장 흔한 단어

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 4. 가장 흔한 단어 리트코드 819번 문제입니다. leetcode.com/problems/most-common-word/ 풀이 paragraph를 전처리 하는 과정이 핵심이었습니다. banned에 해당하는 문자와 특수기호, 띄어쓰기를 제거해야 합니다. 파이썬 리스트컴프리헨션을 이용해 한줄로 전처리하는 코드가 인상깊었습니다. def mostCommonWord(self, paragraph, banned): words = [word for word in re.sub(r'[^\w]',' ',paragraph) .lower().split() if word not in banned] counts = collecti..

Python/알고리즘 2021.02.09

[LeetCode] 771. Jewels and Stones - 보석과 돌

LeetCode 771. Jewels and Stones - 보석과 돌 Jewels and Stones - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 돌을 나타내는 S와 보석을 나타내는 J 가 주어졌을 때, 돌안에 보석이 몇개 들어있는지 알려주기 예시 풀이 1. 해시 테이블을 이용한 풀이 class Solution: def numJewelsInStones(self, J: str, S: str) -> int: freq = {} count = 0 for c..

카테고리 없음 2020.12.10
반응형