본문 바로가기
프로그래머스/Python

[프로그래머스] 문자열 나누기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 9. 23.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 문자열을 계속해서 첫 글자와 비교해 분리하고 그 개수를 구하는 문제이다.

문자열을 분리할 때마다 기준이 되는 첫 글자가 바뀌므로 deque 자료구조를 사용하여 문자를 제거하면서 분리하였다.

 

  1. 문자열을 deque 자료구조로 만들어서 제거하며 문자열을 분리하려고 하므로 deque 모듈을 불러온다. from collections import deque
  2. 입력받은 문자열을 deque 자료구조로 변경한다. s = deque(list(s))
  3. 분리한 문자열을 저장할 리스트를 생성한다. li = list()
  4. 문자열이 모두 제거될 때까지 반복한다. while (s)
  5. 기준이 될 첫 글자를 저장한다. x = s[0]
  6. 첫 글자와 동일한 글자의 개수를 저장할 변수를 생성하고 초기화한다. count1 = 0
  7. 첫 글자와 다른 글자의 개수를 저장할 변수를 생성하고 초기화한다. count2 = 0
  8. 분리한 문자열을 저장할 변수를 생성한다. word = ''
  9. 마찬가지로 처음 문자열이 모두 제거될 때까지 반복한다. while (s)
  10. 문자열에서 제일 앞 글자를 제거하고 저장한다. c = s.popleft()
  11. 만약 해당 글자가 첫 글자와 동일한 글자이면 if (x == c)
  12. 첫 글자와 동일한 글자의 개수를 증가시킨다. count1 += 1
  13. 반면에 해당 글자가 첫 글자와 다르면 else
  14. 첫 글자와 다른 글자의 개수를 증가시킨다. count2 += 1
  15. 해당 글자를 분리한 문자열에 추가한다. word += c
  16. 만약 첫 글자와 동일한 글자의 개수와 다른 글자의 개수가 같으면 if (count1 == count2)
  17. 현재 문자열 분리를 종료한다. break
  18. 분리한 문자열을 리스트에 저장한다. li.append(word)
  19. 문자열을 전부 분리했다면 분리된 문자열의 개수를 저장한다. answer = len(li)
반응형

3. 소스코드

from collections import deque

def solution(s):
    answer = 0
    
    s = deque(list(s))

    li = list()
    while (s):
        x = s[0]
        count1 = 0
        count2 = 0
        word = ''
        while (s):
            c = s.popleft()
            if (x == c):
                count1 += 1
            else:
                count2 += 1
            word += c

            if (count1 == count2):
                break

        li.append(word)

    answer = len(li)
    return answer
728x90
반응형