[CodeKata]Day3

박민하·2022년 6월 10일
0

python 문제

목록 보기
18/49
post-thumbnail

Code Kata 란, 2인 1조의 구성으로 서로 협력하여 하루에 한 문제씩 해결하는 과제입니다.


# 문제

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

  • str: 텍스트
  • return: 중복되지 않은 알파벳 길이 (숫자 반환)
    예를 들어,
str = "abcabcabc"
return3
=> 'abc' 가 제일 길기 때문
str = "aaaaa"
return1
=> 'a' 가 제일 길기 때문
str = "sttrg"
return3
=> 'trg' 가 제일 길기 때문

# 코드

1. 빈 list를 만들어 중복된 알파벳이 나오기 전까지 append 후 length 변수에 길이 반환

def get_len_of_str(s):
  str = []
  length = 0

  for i in range(len(s)):
    if s[i] not in str:
      str.append(s[i])
    else:
      str = [s[i]]
    length = max(length, len(str))
  return length

# 풀이 과정

  1. for 문을 사용한다.
  2. 맨앞에 글자가 중복됐는지 다 돌려본다.
    • 중복되면 끊고 다음 글자부터 다시 돌린다.
      • 끊을때는 인덱스번호로 끊는다?
    • 중복되지 않으면 다음 글자로 넘어가서 돌린다.
  3. 다 돌린 후에 끊은 글자들 중에 가장 긴 글자를 반환한다.
  4. 어떻게 반환할까...?
  5. 빈 리스트 생성
  6. for 문의 변수 i를 빈 리스트에 append 후 그 길이를 length 변수에 할당.
  7. 만약 중복된 알파벳이 있다면 리스트 초기화, length 변수와 길이 비교.
  8. 끝날때까지 반복하면 가장 긴 lenght만 남아서 return.

# ?

1시간 이내에 해결 실패


+ 그 외 코드

1. 중복값이 있을 때까지 리스트 a에 append, 중복 발생 시 리스트 b에 append 후 a 초기화.

def get_len_of_str(s):
    a,b=[],[]
  
    for i in s:
        if i in a:
            b.append(a)
            a=[]
        a.append(i) 
     
    b.append(a)
    return len(max(b, key=len))
profile
backend developer 🐌

0개의 댓글