import time
def get_len_of_str(s):
start_time = time.time()
x = list(s)
y = []
z = []
if s == '': # 예외처리
return 0
for i in range(len(x)):
if x[i] not in y:
y.append(x[i])
if i == len(x)-1:
z.append(''.join(y))
else:
z.append(''.join(y))
y.clear() # 리스트 객체 y를 초기화하고 싶으면 y =[]를 사용해도 된다.
y.append(x[i])
w = max(len(q) for q in z) # s = ''일 때 이 부분에서 error가 발생
# list comprehension
end_time = time.time()
print(end_time-start_time)
return w
review
s=''
)이 주어졌을 경우, w = max(len(q) for q in z)
부분에서 error가 발생한다. 그 이유는 iterable한 객체만이 max()
의 인자로 사용될 수 있기 때문이다. 숫자 0(len('')=0이므로)은 iterable하지 않기 때문에 max()가 실행되지 못하고, 이는 error의 원인이 된다. s = ''
인 경우에 대한 예외 처리가 이뤄져야 한다.y.clear()
대신 y=''
를 사용할 수도 있다. 다른 풀이
def get_len_of_str(str):
answer = ['']
i = 0
for s in str:
if s not in answer[i]:
answer[i] += s # 초깃값 활용하여 특정 인덱스 값을 변화시킴
else:
i += 1
answer.append(s)
return max(len(el) for el in answer)