링크텍스트
말그대로 중복 문자가 없는 가장 긴 부분 문자열을 구하는 문제이다.
쉬워보였지만 나한테는 오래 걸렸던 문제이다..ㅠ
s = "dvdf"
result = []
word = ""
i = 0
pointer = 0
original = s # 원래의 전체 문자열 복사
while True:
if i > len(s): # 인덱스가 문자열 길이보다 클 때 (문자열은 pointer 시작점을 기준으로 계속 잘린다는 것을 생각하자.)
result.append(len(word))
break
s = original[pointer:] # pointer가 가리키는 문자 이후부터 문자열로 취급
# (그 보다 앞 부분은 볼 필요 없음)
if s[i] not in word: # 중복되지 않는 알파벳이면
word += s[i] # 부분 문자열에 추가
i += 1 # 다음 알파벳을 가리킴
else: # 중복된 알파벳이면
result.append(len(word)) # 여태까지의 부분 문자열(중복 없는)을 result배열에 담음
word = "" # 그리고 문자열 초기화 (중복된 알파벳이라서 부분 문자열에 추가할 수 없음. 그대로 끝)
pointer += 1 # pointer(시작점)를 다음 알파벳으로 변경
i = 0 # 인덱스 초기화(문자열의 시작점을 가리킴)
if len(result) == 0: print(1)
else: print(max(result)) # result에 들어 있는 부분 문자열 중 가장 큰 문자열의 크기를 출력
풀이 설명: 주석으로 정리함.
포기하지 말고 끝까지 천천히 생각해보기
그리고 다시 풀 수 있어야 됨.(중요)
다른 방법도 찾아보기