- 오늘의 학습 키워드
슬라이딩 윈도우 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 를 동시 조건으로 가져야한다는점
- 무엇을 새롭게 알았는지
슬라이딩 윈도우 간단한 정의랑 문제 풀이정도만 해봤는데 이렇게 응용된다는것을 다시 배웠다.
- 내일 학습할 것은 무엇인지
'【스터디노트】 > ▷TIL' 카테고리의 다른 글
코테 스터디 36일차 TIL + 오늘의 학습 키워드 이진탐색, bfs (0) | 2025.06.01 |
---|---|
코테 스터디 35일차 TIL + 오늘의 학습 키워드 투포인터 brute force 말고 투포인터 (0) | 2025.05.30 |
코테 스터디 33일차 TIL + 오늘의 학습 키워드 유클리드 거리 (0) | 2025.05.23 |
코테 스터디 32일차 TIL + 오늘의 학습 키워드 BFS (0) | 2025.05.22 |
코테 스터디 31일차 TIL + 오늘의 학습 키워드 선형탐색 (0) | 2025.05.21 |