티스토리 뷰

문제

프로그래머스 - 문자열 나누기

설명

  • 문제에서 주어진 예시로 문제를 설명하면 예를 들어 banana 라는 문자열이 있을 때, 가장 첫번째 문자열. 즉, bx로 초기화한다.
  • 이후 반복문을 차례로 돌면서 x와 같은 문자열이라면 x와 같은 문자열을 카운트하는 x_cnt 값을 증가시키고, x와 같은 문자열이 아니라면 이를 카운트하는 not_x_cnt 값을 증가시킨다.
  • x_cnt값과 not_x_cnt값이 같을 경우 주어진 전체 문자열인 banana에서 현재까지의 인덱스로 문자열을 분리한다. 즉, 현재 x=b, x_cnt=1, not_x_cnt=1 이기 때문에 ba 에서 문자열의 분리가 한번 발생한다. 이때 결괏값 result를 증가시킨다.
  • 한번 문자열을 분리했다면 다시 x값을 분리하고 남은 문자열의 첫번째 문자열로 다시 초기화를 해준다. 이 경우 첫번째 n이 새로운 x값이 되며, 같은 방식으로 진행했을 때, x_cnt=2, not_x_cnt=2가 되는 첫번째 na에서 다시 한번 문자열의 분리가 발생한다. 문자열의 분리가 발생했으므로 result를 증가시킨다.
  • 만약 x_cnt 값과 not_x_cnt값이 다른 상태에서 문자열 반복문이 더이상 읽어들일 문자가 없어 종료된다면 이 경우도 결괏값 result를 증가시켜준다.

코드

def solution(s):
    x_cnt = 0
    not_x_cnt = 0
    result = 0
    x = s[:1]

    for idx, string in enumerate(s):
        if string == x:
            x_cnt += 1
        else:
            not_x_cnt += 1

        if x_cnt == not_x_cnt:
            x = s[idx+1:idx+2]
            result += 1
        else:
            try:
                s[idx+1]
            except IndexError:
                result += 1

    return result
  • 문자열을 분리하고 그 다음 다시 x를 초기화 및 인덱스를 기억하기 위해 enumerate()를 사용하여 구현했다.
  • abracadabra와 같이 ab, ra, ca, da, br, a로 분리되는 경우 마지막 a는 x_cnt값과 not_x_cnt값이 다른 상태에서 반복문이 종료되는데, 이 경우 문자열의 다음 인덱스값을 참조하려고 하면 인덱스 에러가 발생한다. 인덱스 에러가 발생했을 때, 문자열이 종료됐다고 판단하여 이 경우 result 값을 증가시켜준다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함