[TIL] Code Kata 3

SEUNGCHAN BAEK·2021년 3월 31일
0

Code Kata

목록 보기
2/7
post-thumbnail

def get_len_of_str(s):
    word = []
    answer = []
    a = ''
    for i in range(len(s)):
        if i == 0:
            word.append(s[i])
            a += s[i]
        elif s[i] != word[-1]:
            word.append(s[i])
            a += s[i]
        elif s[i] == word[-1]:
            answer.append(a)
            word.append(s[i])
            a = ''
            a += s[i]
    answer.append(a)

    b = len(answer[0])
    for i in range(1,len(answer)):
        if len(answer[i]) > b:
            b = len(answer[i])

    return b

이 코드는 내가 잘못푼 코드이다
나는 같은 문자가 연속해서 나오는것만 안되는줄 알았다.
하지만 한 문자열안에 같은 문자가 있으면 안되는 문제였다.
그렇게 되면 내가 처음에 생각했던 코드보다 비교적 쉽게 문제를 해결할 수 있다.

def get_len_of_str(s):
    answer = []
    a = ''
    for i in s:
        if i not in a:
            a += i
        else:
            answer.append(a)
            a = ''
            a += i
    answer.append(a)

    b = len(answer[0])
    for i in range(len(answer)):
        if len(answer[i]) > b:
            b = len(answer[i])

    return b

이것은 정답으로 인정된 내가 푼 코드이다.
a = '' 할당하고 포문으로 문자열을 돌려서 a 에 문자가 없으면 a 에 문자를 더해주고 문자가 안에 존재하면 거기서 멈춘후 answer 리스트에 a를 넣어준다.
그리고 a를 빈 문자열로 다시 선언하고 다시 a 에 해당 문자가 있는지 확인 후 없으면 a에 문자를 더해준다. 그리고 마지막엔 무조건 a를 answer 리스트에 넣어준다.

그렇게 한 후 answer 리스트에서 길이가 제일 긴 문자열의 길이를 반환하면 끝이다.

profile
백엔드 개발자가 되는 그날까지

0개의 댓글