본문 바로가기
Programming/Python

[프로그래머스 Python] 문자열 나누기

by 용스토리랜드 2024. 8. 7.

💡문제 설명 및 예시

 

문제는 주어진 문자열을 특정 규칙에 따라 여러 개의 부분 문자열로 분해하고, 그 개수를 반환하는 것입니다. 다음과 같은 과정을 따릅니다:

  1. 문자열의 첫 글자(x)를 기준으로 설정합니다.
  2. 문자열을 왼쪽에서 오른쪽으로 읽어가며 x의 등장 횟수와 x가 아닌 글자의 등장 횟수를 세어 갑니다.
  3. 두 횟수가 같아지는 순간을 찾아 그 지점까지의 부분 문자열을 분리합니다.
  4. 분리된 부분을 제외한 나머지 문자열에 대해 위 과정을 반복합니다.
  5. 남은 문자열에 더 이상 글자가 없거나 두 횟수가 같아질 때까지 계속 분리합니다.
  6. 최종적으로 분해된 문자열의 개수를 반환합니다.

예를 들어 "banana"는 "ba", "na", "na"로 분해되며, 결과적으로 3개의 부분 문자열로 나뉩니다.

💡작성코드 1 (정답)

def solution(s):
    answer = 0  # 분해된 부분 문자열의 개수를 카운트하기 위한 변수

    x = s[0]  # 첫 글자를 x로 설정
    same = 0  # x와 같은 글자의 개수를 세는 변수
    diff = 0  # x와 다른 글자의 개수를 세는 변수

    # 문자열 s의 각 글자에 대해 반복
    for idx, s_ in enumerate(s):

        # 현재 글자가 x와 같다면 same 카운터 증가
        if x == s_:
            same += 1
        # 현재 글자가 x와 다르다면 diff 카운터 증가
        else:
            diff += 1

        # same과 diff가 같아지고, 마지막 인덱스가 아닌 경우
        if (same == diff) & (idx != len(s) - 1):
            answer += 1  # 분해된 문자열의 개수를 1 증가
            x = s[idx + 1]  # 다음 부분 문자열의 시작 글자를 새로운 x로 설정
            same = 0  # same 카운터 초기화
            diff = 0  # diff 카운터 초기화

    # 모든 검사가 끝난 후, 마지막으로 카운트된 부분 문자열을 포함하기 위해 +1
    return answer + 1

 

반응형