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

첫번째 방법class Solution: def canMakeSubsequence(self, str1: str, str2: str) -> bool: i, j = 0, 0 # 두 문자열을 비교할 포인터 while i 코드 설명투 포인터 접근법 (i, j 사용)i: str1을 탐색하는 포인터j: str2를 탐색하는 포인터문자 비교str1[i] == str2[j]: 그대로 유지 가능str1[i]가 str2[j]의 바로 이전 문자인지 확인(ord(str1[i]) - ord('a') + 1) % 26 + ord('a') == ord(str2[j])이 조건이 참이면 str1[i]를 변환하여 str2[j]로 만들 수 있음.26이 나오는 이유는 알파벳이 26개 존재하기 때문..

class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ low, mid, high = 0, 0, len(nums) - 1 # 세 개의 포인터 설정 while mid 코드 설명low, mid, high 세 개의 포인터를 사용하여 배열을 정렬한다.초기 설정low: 0을 배치할 위치mid: 현재 검사 중인 위치high: 2를 배치할 위치while 반복문 (mid ≤ high)nums[mid] == 0 (빨간색)low와 mid를 swap하고 low와 mid를 증가nums[mid..

class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ non_zero_index = 0 # 배열을 처음부터 끝까지 순회하면서 0이 아닌 요소를 앞으로 이동 for i in range(len(nums)): if nums[i] != 0: # 현재 숫자(nums[i])와 non_zero_index 위치의 숫자를 스왑 nums[non_zero_index], nums[i] = nums[i..

이 문제를 한 번의 순회(One-pass)로 해결하는 방법은 두 개의 포인터(first, second)를 사용하는 것이다.first 포인터를 먼저 n칸 이동시킨 후, second 포인터를 first와 함께 이동하면 first가 끝에 도달했을 때 second는 삭제할 노드의 직전 노드를 가리키게 된다.✅ 알고리즘 풀이 (Two Pointer)더미 노드 추가: 삭제할 노드가 head일 수도 있으므로 더미 노드를 추가.first 포인터 선행 이동: first를 n칸 먼저 이동.두 포인터 이동: first가 리스트의 끝에 도달할 때까지 second와 함께 이동.노드 삭제: second.next를 second.next.next로 변경하여 노드 삭제.새로운 head 반환: dummy.next를 반환.# Defini..

Two Pointer 방식으로 해결하는 방법Two Pointer 방식을 사용하려면, BST(Binary Search Tree)의 중위 순회(in-order traversal)를 수행하여 오름차순으로 정렬된 리스트를 만든 후, 투 포인터를 사용하여 두 숫자의 합이 k가 되는지 확인하면 된다.Two Pointer 알고리즘BST를 중위 순회하여 정렬된 리스트를 생성중위 순회(In-order Traversal)를 수행하면 BST의 값이 오름차순으로 정렬됨.Two Pointer 기법을 활용하여 합이 k가 되는 두 수 찾기리스트의 left(처음)과 right(끝) 포인터를 설정.두 값의 합이 k보다 작으면 left를 증가.두 값의 합이 k보다 크면 right를 감소.두 값의 합이 k이면 True 반환.# Defin..