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

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) 자료형을 생성하는 함수중복 제거: 리스트나 문자열 등의 중복된 요소를 자동으로 제거.순서 없음: 요소의 순서가 보장되지 않음.빠른 멤버십 테스트 ..

https://neetcode.io/problems/permutation-string NeetCode neetcode.io🛠 해결 전략이 문제는 슬라이딩 윈도우(Sliding Window) + 해시맵(딕셔너리) 활용으로 O(n)에 해결할 수 있다.s1의 모든 문자 빈도 수를 계산 (char_count_s1).s2에서 길이가 len(s1)인 윈도우를 이동하며 같은 빈도 수를 갖는지 비교 (char_count_window).첫 번째 윈도우 확인 후 한 칸씩 이동하며 검사만약 동일한 빈도 수를 가지는 구간이 있다면 True 반환.class Solution: def checkInclusion(self, s1: str, s2: str) -> bool: n, m = len(s1), len(s2)..

🔍 슬라이딩 윈도우(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..

https://neetcode.io/problems/longest-repeating-substring-with-replacement NeetCode neetcode.io🛠 해결 방법슬라이딩 윈도우를 사용하여 left와 right 두 개의 포인터로 윈도우 크기를 조정한다.윈도우 내에서 가장 많이 등장한 문자를 찾고, 나머지 문자들을 k번 변경할 수 있는지 확인한다.윈도우 크기에서 가장 많이 등장한 문자 개수를 제외한 나머지 문자가 k보다 크면 left 포인터를 이동하여 윈도우를 줄인다.최대 윈도우 크기를 갱신하면서 탐색을 진행한다.class Solution: def characterReplacement(self, s: str, k: int) -> int: left = 0 m..

// 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 = ..

슬라이딩 윈도우(Sliding Window): 윈도우(특정 범위)가 있을 때, 윈도우 내부 요소의 값을 이용하여 문제를 풀이하는 알고리즘.class Solution: def findMaxAverage(self, nums: List[int], k: int) -> float: # 초기 윈도우 설정 (첫 k개의 합) current_sum = sum(nums[:k]) max_sum = current_sum # 슬라이딩 윈도우 이동 for i in range(k, len(nums)): current_sum += nums[i] - nums[i - k] # 윈도우 이동 (새로운 값 추가, 오래된 값 제거) m..