[wecode/codekata]Day 3

Jimin_Note·2022년 6월 9일
0

⌨️wecode/code_kata

목록 보기
3/13
post-thumbnail

📍문제

String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)

inputresult
"abcabcabc"3'abc' 가 제일 길기 때문
"aaaaa"1'a' 가 제일 길기 때문
"sttrg"3'trg' 가 제일 길기 때문

📍내 코드

def get_len_of_str(s):
   a,b=[],[] 
   '''
   리스트 a : 중복되는 문자열을 만나기 전까지 넣어둘 곳
   리스트 b : 중복을 만나면 옮겨놓을 곳
   '''
    
   for i in s:
      if i in a: #리스트 a 안에 문자열 i가 있다면 (중복된다면)
       b.append(a) #지금까지 모아놓은 문자열을 리스트b에 넣고
       a=[] #a 리셋
      a.append(i) #리셋한 리스트 a에 i 입력

   b.append(a) #for문에서 나오지 못했을 마지막 리스트 a 추가
   return len(max(b,key=len)) #문자열 길이를 기준으로 b에서 제일 긴 문자열의 길이를 반환

📍다른 코드

def get_len_of_str(s):
  str = []
  l = 0
  
  for i in s:
    if i not in str: #리스트str 안에 i가 없으면
      str.append(i)  #리스트str 에 i 추가
    else:            #리스트str 안에 i가 있으면
      str = [i]      #리스트srt 모두 리셋 + i만 추가
    
    l = max(l,len(str))
    '''
    첫번째 for문 : max(0,len(str)) -> l=len(str)
    두번째 for문 : max(l ,len(str))-> 길이가 더 긴 값을 l에 저장하여 다음 for문의 len(str)과 비교하여 l 에 저장
    .
    .
    .
    '''
  return l #for문으로 len(str)비교하였을때 최종적으로 저장된 값이 가장 긴 문자열이 l에 저장되어있음
profile
Hello. I'm jimin:)

0개의 댓글