일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- sql코테
- nlp
- Blazor
- 투포인터
- 슬라이딩윈도우
- 리트코드
- 파이썬
- 릿코드
- 코드업
- 자연어처리
- 생성형AI
- 니트코드
- GenAI
- 파이썬알고리즘
- two-pointer
- codeup
- slidingwindow
- medium
- Python3
- 알고리즘
- dfs
- Python
- gcp
- LeetCode
- SQL
- 파이썬기초100제
- 구글퀵랩
- GenerativeAI
- stratascratch
- Microsoft
- Today
- Total
목록리트코드 (29)
Tech for good

Example 1:gifts = [25, 64, 9, 4, 100], k = 4[25, 64, 9, 4, 100]-> (1회) [25, 64, 9, 4, 10]-> (2회) [25, 8, 9, 4, 10]-> (3회) [5, 8, 9, 4, 10]-> (4회) [5, 8, 9, 4, 3] (floor or the square root - floor: 내림)5 + 8 + 9 + 4 + 3 = 29 Follow these steps:Pick the largest pile of gifts.Replace it with the floor of its square root.Repeat this for k seconds.🔧 Best Tool for This?We need to efficiently get the l..

You can solve this problem by:Finding the k largest elements based on value (to maximize the sum).Preserving their original order in the array (since it's a subsequence).class Solution: def maxSubsequence(self, nums: List[int], k: int) -> List[int]: # Step 1: Pair each element with its original index indexed_nums = list(enumerate(nums)) # Step 2: Select the k larg..

class Solution: def maxProduct(self, nums: List[int]) -> int: # Convert to max-heap by pushing negative values max_heap = [-num for num in nums] heapq.heapify(max_heap) # Pop the two largest values first_max = -heapq.heappop(max_heap) second_max = -heapq.heappop(max_heap) return (first_max - 1) * (second_max - 1)

# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def leafSimilar(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool: # 주어진 트리의 리프 노드(leaf node) 값을 순서대로 가져오는 함수 def get_leaf_sequence(root: Optional[TreeNode]) -> ..

# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def sumOfLeftLeaves(self, root: Optional[TreeNode]) -> int: if not root: return 0 total = 0 # 왼쪽 자식이 리프 노드라면 값 추가 if root.left and not root.left.l..

// 1. nums[l] % 2 == 0 -> left pointer가 가리키는 숫자가 짝수니?nums = [3,2,5,4]// For all indices i in the range [l, r - 1], nums[i] % 2 != nums[i + 1] % 2nums = [3,2,5,4]// -> [l, r-1] 범위 사이에 짝수랑 홀수가 번갈아가면서 나오니?i = 0 -> nums[i=0] = 3 -> 3 % 2 = 1i = 1 -> nums[i+1] = 2 -> 2 % 2 = 05 -> ... % 2 = 14 -> ... % 2 = 0// For all indices i in the range [l, r], nums[i] 윈도우의 시작점 찾기nums[l]이 짝수(% 2 == 0)이고, nums[l]..

슬라이딩 윈도우 반복 (for right in range(len(nums)))right 포인터를 이동하면서 새로운 숫자를 곱함.product *= nums[right] → 현재 부분 배열의 곱을 업데이트.조건을 만족하지 않으면 left 이동 (while product >= k)곱이 k 이상이면 left 포인터를 오른쪽으로 이동하여 곱을 줄임.product //= nums[left]: left가 가리키던 값을 나누어 곱을 감소.//= : 몫을 구하는 나눗셈 후 할당 연산자ex) a //= b -> a = a // bleft += 1: left를 이동하여 윈도우 크기를 줄임.가능한 부분 배열 개수 추가 (count += right - left + 1)(right - left + 1)는 현재 윈도우에서 만들 ..

class Solution: def countGoodSubstrings(s: str) -> int: count = 0 for i in range(len(s) - 2): # 길이가 3인 모든 부분 문자열을 검사 substring = s[i:i+3] # 길이 3의 부분 문자열 추출 if len(set(substring)) == 3: # 중복 문자가 없는지 확인 count += 1 return countset() => 중복을 허용하지 않는 집합(set) 자료형을 생성하는 함수중복 제거: 리스트나 문자열 등의 중복된 요소를 자동으로 제거.순서 없음: 요소의 순서가 보장되지 않음.빠른 멤버십 테스트 ..

🔍 슬라이딩 윈도우(Sliding Window)배열에서 부분 합을 효율적으로 계산하는 기법매번 전체 합을 다시 계산하지 않고, 최초 윈도우의 합을 미리 계산해둔 후 기존 윈도우의 값을 조금씩 변경하면서 업데이트한다.즉, 현재 합에서 빠질 값과 추가할 값만 업데이트하면 O(1) 시간에 갱신이 가능한 효율적 알고리즘이다! class Solution: def decrypt(self, code: List[int], k: int) -> List[int]: n = len(code) # 원래 코드 배열의 길이 # k가 0이면 모든 원소를 0으로 변경 if k == 0: return [0] * n # Extend..

// calories = [1,2,3,4,5]// k = 2// lower = 5// upper = 6// 1st: (1,2) = 3 -1// 2nd: (2,3) = 5 -> 0슬라이딩 윈도우 접근법:슬라이딩 윈도우를 사용하면 매번 k 길이의 구간을 합산하는 대신, 윈도우를 한 칸씩 이동하며 기존 합에서 가장 왼쪽 값을 빼고, 새롭게 들어온 값을 더하는 방식으로 효율적으로 합계를 구할 수 있다.시간 복잡도는 O(n)으로, calories 길이가 최대 10^5까지 가능하므로 효율적으로 동작한다.class Solution: def dietPlanPerformance(self, calories: List[int], k: int, lower:int, upper: int) -> int: points = ..