## ℹ️ 문제 정보 - 플랫폼: #leetcode - 난이도: #medium - 문제 링크: [Longest Substring Without Repeating Characters - LeetCode](https://leetcode.com/problems/longest-substring-without-repeating-characters) ## 📝 문제 요약 주어진 문자열에서 **중복되지 않는 가장 긴 부분 문자열(substring)**의 길이를 구하는 문제.   예: `"abcabcbb"` → 3 (`"abc"`) ## 💡 풀이 아이디어 - 슬라이딩 윈도우 - left와 right 두 포인터를 이동시키면서 중복 없는 부분 문자열을 찾는다. - 중복 문자를 체크하기 위해서 set을 활용함. ## 🔑 코드 ```typescript function lengthOfLongestSubstring(s: string): number { // 문자열의 문자가 1개 이하인 경우 해당 문자열이 최대 길이 substring if (s.length <= 1) return s.length; let maxLength = 1; // 최소 substring 길이는 문자 하나 길이인 1 const charSet = new Set() let left = 0, right = left + 1; charSet.add(s[left]); while (left < right && right < s.length) { // right의 문자가 charSet에 없을 때 까지 까지 left를 이동 while (charSet.has(s[right]) && left < right) { charSet.delete(s[left]); left++; } // substring 길이 업데이트하기 maxLength = Math.max(maxLength, right - left + 1); // right를 오른쪽으로 한칸 옮기기 charSet.add(s[right]); right++; } return maxLength; }; ``` ## ⚠️ 반성 > [!note]- 1트 > 중복 제거 시에 left를 한칸만 오른쪽으로 옮겨주고 다음 루프로 돌아가게 했다. > 다음 루프에서 남아 있던 중복들이 알아서 없어질 줄 알았는데 아니었다. ## 🔁 복습 기록 - [ ] 2025-09-16 복습 하시오