반응형

Python/알고리즘 52

[파이썬 알고리즘 인터뷰] 30. 중복 문자 없는 가장 긴 부분 문자열

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 30. 중복 문자 없는 가장 긴 부분 문자열 leetcode 3. Longest Substring Without Repeating Characters 문제입니다. leetcode.com/problems/longest-substring-without-repeating-characters/ 풀이 s를 enumerate로 index와 char을 하나씩 꺼냅니다. char에 해당하는 index를 dictionary에 저장하고, char가 이미 dictionary에 저장되어 있으면 중복 문자입니다. 이 경우에 start를 변경해줍니다. def lengthOfLongest..

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

[파이썬 알고리즘 인터뷰] 28. 해시맵 디자인

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 28. 해시맵 디자인 leetcode 706. Design HashMap 문제입니다. leetcode.com/problems/design-hashmap/ 풀이 연결 리스트로 구현한 해시맵입니다. 충돌을 처리하는 방법은 개별 체이싱입니다. class MyHashMap: # 초기화 def __init__(self): self.size = 1000 self.table = collections.defaultdict(ListNode) # 삽입 def put(self, key, value): index = key % self.size # 인덱스에 노드가 없다면 삽입 후 종..

Python/알고리즘 2021.03.04

[파이썬 알고리즘 인터뷰] 27. k개 정렬 리스트 병합

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 27. k개 정렬 리스트 병합 leetcode 23. Merge K Sorted Lists 문제입니다. leetcode.com/problems/merge-k-sorted-lists/ 풀이 우선순위 큐를 활용해서, 최소값에 해당하는 node.val을 추출하고, next가 존재하면 next.val를 우선순위 큐에 다시 넣어줍니다. 파이썬에서 우선순위 큐는 heapq 모듈을 사용합니다. def mergeKLists(self, lists): root = result = ListNode(None) heap = [] # 각 연결 리스트의 루트를 힙에 저장 for i in ..

Python/알고리즘 2021.03.04

[파이썬 알고리즘 인터뷰] 26. 원형 데크 디자인

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 26. 원형 데크 디자인 leetcode 641. Design Circular Deque 문제입니다. leetcode.com/problems/design-circular-deque/ 풀이 이중 연결 리스트를 이용한 풀이입니다. class ListNode: def __init__(self, x): self.val = x self.right = None self.left = None class MyCircularDeque: def __init__(self, k): self.head, self.tail = ListNode(None), ListNode(None) sel..

Python/알고리즘 2021.03.03

[파이썬 알고리즘 인터뷰] 25. 원형 큐 디자인

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 25. 원형 큐 디자인 leetcode 622. Design Circular Queue 문제입니다. leetcode.com/problems/design-circular-queue/ 풀이 class MyCirculurQueue: def __init__(self, k): self.q = [None] * k self.maxlen = k self.p1 = 0 self.p2 = 0 # enQueue(): rear 포인터 이동 def enQueue(self, value): if self.q[self.p2] is None: self.q[self.p2] = value self..

Python/알고리즘 2021.03.02

[파이썬 알고리즘 인터뷰] 24. 스택을 이용한 큐 구현

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 24. 스택을 이용한 큐 구현 leetcode 232. Implement Queue using Stacks 문제입니다. leetcode.com/problems/implement-queue-using-stacks/ 풀이 class MyQueue: def __init__(self): self.input = [] self.output = [] def push(self, x): self.input.append(x) def pop(self): self.peek() return self.output.pop() def peek(self): # output이 없으면 모두 재입..

Python/알고리즘 2021.03.02

[파이썬 알고리즘 인터뷰] 23. 큐를 이용한 스택 구현

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 23. 큐를 이용한 스택 구현 leetcode 225. Implement Stack using Queues 문제입니다. leetcode.com/problems/implement-stack-using-queues/ 풀이 class MyStack: def __init__(self): self.q = collections.deque() def push(self, x): self.q.append(x) # 요소 삽입 후 맨 앞에 두는 상태로 재정렬 for _ in range(len(self.q) - 1): self.q.append(self.q.popleft()) def ..

Python/알고리즘 2021.03.02

[파이썬 알고리즘 인터뷰] 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

[파이썬 알고리즘 인터뷰] 21. 중복 문자 제거

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 21. 중복 문자 제거 리트코드 316. Remove Duplicate Letters 문제입니다. leetcode.com/problems/remove-duplicate-letters/ 풀이 def removeDuplicateLetters(self, s): stack,seen,counts = [], set(), collections.Counter(s) for char in s: counts[char] -= 1 while stack and char 0: seen.remove(stack.pop()) se..

Python/알고리즘 2021.02.22
반응형