일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 99클럽
- 빈 조회 2개 이상
- 디자인 패턴
- 1주일회고
- DesignPattern
- spring batch 5.0
- 디자인패턴
- KPT회고
- 파이썬
- @FeignClient
- 인프콘 2024
- jwttoken
- 프로그래머스 이중우선순위큐
- 취업리부트코스
- 프로그래머스
- 개발자 취업
- JavaScript
- 빈 충돌
- 개발자부트캠프추천
- 구글 OAuth login
- 항해99
- 전략패턴 #StrategyPattern #디자인패턴
- Spring multimodule
- infcon 2024
- 단기개발자코스
- jwt
- 커스텀 헤더
- TiL
- Python
- 코딩테스트 준비
- Today
- Total
목록알고리즘 with python (73)
m1ndy5's coding blog
https://leetcode.com/problems/merge-two-sorted-lists/ # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: # 새로운 리스트노드 생성 curr = dummy = ListNode() while list1 and list2: # 더 작은 값을 현재 뒤에다 붙임 if list1.val..
https://leetcode.com/problems/reverse-linked-list/ # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: node, prev = head, None while node: next, node.next = node.next, prev prev, node = node, next return prev 연결리스트를 거꾸로 뒤집는 문제다 이 때 ..
https://leetcode.com/problems/kth-largest-element-in-an-array/ import heapq class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: nums = [-1 * num for num in nums] heapq.heapify(nums) answer = 0 for _ in range(k): answer = heapq.heappop(nums) return answer * -1최대힙처럼 작동해야했기 때문에 -1을 곱했다. sort로 풀어도 문제없는 문제였다.
https://leetcode.com/problems/the-k-weakest-rows-in-a-matrix/ import heapq class Solution: def kWeakestRows(self, mat: List[List[int]], k: int) -> List[int]: order = [row.count(1) for row in mat] heap = order[:] heapq.heapify(heap) visited = [0 for _ in range(len(order))] answer = [] for _ in range(k): m = heapq.heappop(heap) for i, v in enumerate(order): if v == m and visited[i] == 0: answer.ap..
https://leetcode.com/problems/maximum-product-of-two-elements-in-an-array/ python heapq는 기본적으로 minheap구조로 되어있다. 따라서 max값을 구하고 싶을 때는 -1을 곱해서 힙에 넣고 최솟값을 뺀 뒤 다시 -1을 곱해주면 된다. import heapq class Solution: def maxProduct(self, nums: List[int]) -> int: nums = [-1 * num for num in nums] heapq.heapify(nums) # -1를 곱했기 때문에 1을 빼려면 1을 더해주면 된다 혹은 리턴할 때 1을 빼고 곱해주거나! a = heapq.heappop(nums)+1 b = heapq.heappop(..
https://leetcode.com/problems/top-k-frequent-elements/ class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: dic = {} answer = [] for num in nums: if num not in dic: dic[num] = 1 else: dic[num] += 1 #[[1, 3번], [2, 2번], ...] l = [[key, value] for key, value in dic.items()] # 빈도수 기준 정렬(내림차순) l.sort(key=lambda x: x[1], reverse = True) # k개만 뽑기 for i in range(k): answer.appen..
[https://leetcode.com/problems/longest-substring-without-repeating-characters/] 내가 푼 코드 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: answer = 0 # 중복 알바벳 체크 alpha = set() # 길이가 1이면 그냥 1 리턴 if len(s) == 1: return 1 for i in range(len(s) - 1): alpha = set() # 차례대로 비교해서 중복 있으면 포문 나오기 for j in range(i, len(s)): if s[j] not in alpha: alpha.add(s[j]) else: break # 현재 최대값이랑 비교해서 더 ..
https://leetcode.com/problems/jewels-and-stones/ class Solution: def numJewelsInStones(self, jewels: str, stones: str) -> int: jewels_dic = {jewel: 0 for jewel in jewels} for stone in stones: if stone in jewels_dic: jewels_dic[stone] += 1 return sum(jewels_dic.values())stones에 jewels가 몇개 나왔는지 dictionary에 저장하고 더하는 식으로 풀었는데 아주 쿨한 코드를 발견했다. class Solution: def numJewelsInStones(self, jewels: str, s..
https://leetcode.com/problems/daily-temperatures/ 바로 풀이법을 떠올리진 못했던 문제였다. (떠올렸던 방법은 계속해서 비교하는 거였는데 10^5개까지 리스트 길이가 가능해서 최악에 경우에는 시간초과 당연했다) 그냥 스택이나 큐를 풀차례여서 아 둘 중에 하나를 쓰고 풀어야겠다 라고 생각이 들어서 풀었던 문제..? 이런 비슷한 유형들을 많이 풀어서 해결법을 좀 익혀놔야겠다! 아이디어 생각했던 방법은 스택에는 인덱스를 저장해놓고 스택의 마지막 값과 들어오는 값을 비교해서 들어오는 값이 더 크면 그 둘의 인덱스 차이를 저장하는 방법이었다. class Solution: def dailyTemperatures(self, temperatures): l = len(temperat..
https://leetcode.com/problems/implement-queue-using-stacks/ class MyQueue: def __init__(self): self.stack = [] self.pointer = 0 def push(self, x: int) -> None: self.stack.append(x) def pop(self) -> int: tmp = self.stack[self.pointer] self.pointer += 1 return tmp def peek(self) -> int: return self.stack[self.pointer] def empty(self) -> bool: return self.pointer == len(self.stack)Stack을 이용하여 Queue..