LeetCode/NeetCode 98

[Sliding Window Fixed Size] 219. Contains Duplicate II

219. Contains Duplicate II 해시맵 으로..class Solution: def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool: hashMap = {} # 숫자와 해당 숫자가 마지막으로 등장한 인덱스를 저장하는 딕셔너리 # nums 리스트를 순회하며 숫자와 인덱스를 처리 for i, n in enumerate(nums): # 현재 숫자가 hashMap에 존재하고, 인덱스 차이가 k 이하인지 확인 if n in hashMap and abs(i - hashMap[n])   셋(set) 으로.. https://youtu.be/ypn0aZ0nrL..

LeetCode/NeetCode 2024.12.01

[Sliding Window Variable Size] 3. Longest Substring Without Repeating Characters

3. Longest Substring Without Repeating Characters 최종 코드https://youtu.be/wiGpQwVHdE0?si=b-6NK2xTHLhlVE5- 이 문제는 슬라이딩 윈도우 기법을 사용해서 효율적으로 풀 수 있어요.핵심 아이디어는: 중복 문자가 없을 때까지 윈도우를 오른쪽으로 확장하고,중복 문자가 나오면 왼쪽 포인터를 이동시켜 중복을 제거하는 거예요. 🧠 예제 설명예제 1: "zxyzxyz""zxy" (길이 3)까지는 중복 없음 → 계속 확장"zxyz"에서 다시 'z' 중복 → "xyz"부터 다시 시작가장 긴 중복 없는 부분은 "xyz" → 정답: 3✅ 시간복잡도O(n) (n은 문자열 길이)각 문자는 최대 한 번씩 set에서 추가/제거됨 class Solution..

LeetCode/NeetCode 2024.11.29

[Two Pointers] 125. Valid Palindrome

125. Valid Palindrome 내 코드 class Solution: def isPalindrome(self, s: str) -> bool: """ isalnum은 **"is alphabetic or numeric"**의 약자로, 알파벳 또는 숫자인지 확인하는 메서드입니다. - is: "인지 확인"을 의미 (True/False 결과 반환). - al: alphabetic(알파벳)의 약자. - num: numeric(숫자)의 약자. 숫자 이거나 알파벳이면 True isdigit(): 숫자인지 확인 """ only_alnum = "" for w in s: ..

LeetCode/NeetCode 2024.11.28

[Two Pointers] 42. Trapping Rain Water ★★★

42. Trapping Rain Water https://youtu.be/ZI2z5pq0TqA?si=vMNp4_SRqkju2a6b  O(n) 공간 사용from typing import Listclass Solution: def trap(self, height: List[int]) -> int: # 높이 배열의 길이를 가져옵니다. n = len(height) # 배열이 비어있는 경우 0을 반환 (예외 처리) if not n: return 0 # maxLeft: 각 위치에서 왼쪽으로 가장 높은 기둥의 높이를 저장할 리스트 # maxRight: 각 위치에서 오른쪽으로 가장 높은 기둥의 높이를 저장할 리스트 ..

LeetCode/NeetCode 2024.11.28

[Two Pointers] 80. Remove Duplicates from Sorted Array II

80. Remove Duplicates from Sorted Array II https://youtu.be/ycAq8iqh0TI?si=xnT3SvO1n9jkMNVq class Solution: def removeDuplicates(self, nums: List[int]) -> int: k = 0 # 중복되지 않은 요소를 저장할 위치를 추적하는 포인터 prev = nums[0] - 1 # 이전에 저장된 값을 추적하기 위한 변수, nums[0]보다 작은 값으로 초기화 cnt = 0 # 현재 숫자가 몇 번 등장했는지 추적 # 배열을 순회하며 중복을 제거 for i in range(len(nums)): if nums[i..

LeetCode/NeetCode 2024.11.25