[Programmers][Py] 문자열 나누기

mj·2024년 7월 27일
0

코딩테스트문제

목록 보기
39/50

✅ 문제

문제 바로가기



✅ 나의 풀이

기본 규칙

  • 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.
  • 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.

종료 조건

  • 문자열의 남은 부분이 없는 경우 (빈 문자열인 경우)
  • 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없으면 종료
    ex) s = "bba"

이 문제는 종료조건이 될때까지 반복하며 s를 분리한다.
while문으로 반복을 구현하였으며, 종료조건에 이르면 while문을 탈출하도록 했다.


def solution(s):

    result = 0
    xCnt = 0 # x가 나온 횟수
    yCnt = 0 # x가 아닌 다른 글자들이 나온 횟수
    
    # 문자열의 남은 부분이 없으면 종료
    while s:
        
        x = s[0]
        
        for idx,i in enumerate(s):
            if x == i:
                xCnt += 1
            else:
                yCnt += 1
            
            if xCnt == yCnt:
                result += 1
                s = s[idx+1:]
                break
        # 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없으면 종료
        else:
            result += 1
            break
        
    return result 
        


✅ 다른 방법

queue 사용하기

나의 경우 for문으로 문자열을 하나씩 순회하였는데 이 대신 큐를 사용하는 방법도 있다. 나의방법의 경우, 인덱스를 새롭게 분리한 문자열의 첫번째로 옮겨주어야 했는데 큐를 사용하면 그럴필요없이 이어서 popleft()하면 된다.

profile
일단 할 수 있는걸 하자.

0개의 댓글