문자열

박진은·2023년 3월 17일
0

코테

목록 보기
18/44

https://school.programmers.co.kr/learn/courses/30/lessons/140108/solution_groups?language=python3&type=my

문제는 위 링크에서 확인 바란다.

def divie(s, answer):
    first = s[0]
    same = 0
    notsame = 0

    for i, e in enumerate(s):
        if e == first:
            same += 1
        else:
            notsame += 1

        if same == notsame and len(s) >= 2 and i != len(s)-1:
            answer =+ divie(s[i + 1:], answer)
            return answer + 1
    return answer


def solution(s):
    answer = 0
    return divie(s, answer)

초반에는 재귀적으로 풀이하면 쉬울거 같아서 위와 같이 구현했다 하지만 재귀적으로 들어가면 역시 런타임이 놓아 진다. 따라서 이를 피해기 위해서 다시 O(n)으로 변경했다.

def solution(s):
    f = s[0]
    count = 0
    diff = 0
    same = 0
    for i, e in enumerate(s):

        if e == f:
            same += 1
        else:
            diff += 1

        if same == diff and i+1 != len(s):
            count += 1
            f = s[i+1]
            diff = 0
            same = 0

    return count+1

반복문을 한번만 수행하게 만드니 오류가 나지 않았다.

profile
코딩

0개의 댓글