본문 바로가기
  • Adillete
【스터디노트】/▷TIL

코테 스터디 34일차 TIL + 오늘의 학습 키워드 슬라이딩윈도우

by 아딜렛 2025. 5. 26.




- 오늘의 학습 키워드

슬라이딩 윈도우 left right 정해놓고 left 오른쪽으로 움직이고 right 왼쪽으로 움직여서 푸는 문제
- 공부한 내용 본인의 언어로 정리하기

두개의 포인터를 사용해서 윈도우를 만든다

right 포인터로 문자열을 확장하면서 중복문자가 없는 부분 문자열을 찾는다.

중복문자를 만나면 left 포인터를 이동시켜 중복을 제거한다

각 단계에서 최대 길이를 업데이트

 

수도코드

 

function lengthOfLongestSubstring(s):
  charIndexMap = empty hashmap
    left=0
    maxLength =0
    
    for right = 0 to s.length -1:
       if s[right] in charIndexMap and charIndexMap[s[right]] >= left:
         left = charIndexMap[s[right]]+1 //중복 문자 다음 위치로 점프
         
       charIndexMap[s[right]] =right //현재 문자의 인덱스 저장
       maxLength = max(maxLength, right-left+1)
       
       return maxLength

 

 


- 오늘의 회고
  - 어떤 문제가 있었고, 나는 어떤 시도를 했는지

확실하게 문제를 풀이하는데 3일정도 소요되었다. 

 

  - 어떻게 해결했는지

문자열을 한문자씩 순회하기 때문에 right 슬라이딩 포인트가 0부터  시작하도록 만드는것

현재 처리중인 문자는 char currentCHar으로 인수 s 중에서 하나씩 가져오는 charAt 메서드를 사용했다는것

charIndexMap에 넣은 문자 중에서도 left 랑 비교하려면 일단 left 보다는 큰 수를 가져와야하기때문에

left 비교할때  charIndexMap.get(currentChar) >=left 를 동시 조건으로 가져야한다는점


  - 무엇을 새롭게 알았는지

슬라이딩 윈도우 간단한 정의랑 문제 풀이정도만 해봤는데 이렇게 응용된다는것을 다시 배웠다.
  - 내일 학습할 것은 무엇인지