Don't BRUTE FORCE, use 2 pointers
- Two pointers 패턴은 알고리즘의 시간 복잡도를 O(N^2)에서 O(N)으로 줄이는 데 유용하며, 문자열, 배열, 연결 리스트 등에 적용 가능 ⏱️
- 포인터는 배열의 인덱스나 문자열의 문자처럼 요소의 위치를 추적하는 변수이며, 두 개의 포인터를 사용하면 더 다양한 문제 해결 가능 📍
- 회문(palindrome) 검사 시, 문자열의 처음과 끝에 각각 포인터를 두고 안쪽으로 이동시키면서 문자를 비교하는 converging pointers 방식 활용 🔄
- Sliding window 방식은 부분 문자열 검사 등에 유용하며, 두 포인터 사이의 특정 조건을 만족하는 부분 집합을 찾는 데 사용 🗔
- 주식 가격 변동 문제에서, 한 포인터는 매수 시점을, 다른 포인터는 매도 시점을 추적하여 최대 이익을 계산하는 데 활용 📈
- 유효한 회문(Valid Palindrome) 문제 해결 시, 좌우 포인터를 이동하며 문자를 비교하고, 영숫자 여부와 대소문자를 고려해야 함 🔤
- 중복 문자 없는 가장 긴 부분 문자열(Longest Substring Without Repeating Characters) 문제에서 sliding window 방식을 사용하여 O(N) 시간 복잡도로 해결 가능 🎯
- Set 자료구조를 활용하여 sliding window 내의 문자 중복 여부를 효율적으로 관리하고, 최대 부분 문자열 길이를 추적 🧩
- Brilliant 스폰서 언급과 문제 해결 능력 향상을 위한 인터랙티브 학습 플랫폼 추천 👍