728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 문자열을 계속해서 첫 글자와 비교해 분리하고 그 개수를 구하는 문제이다.
문자열을 분리할 때마다 기준이 되는 첫 글자가 바뀌므로 deque 자료구조를 사용하여 문자를 제거하면서 분리하였다.
- 문자열을 deque 자료구조로 만들어서 제거하며 문자열을 분리하려고 하므로 deque 모듈을 불러온다. from collections import deque
- 입력받은 문자열을 deque 자료구조로 변경한다. 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)
반응형
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
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 2개 이하로 다른 비트 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.01 |
---|---|
[프로그래머스] 대충 만든 자판 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.29 |
[프로그래머스] 2 x n 타일링 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.27 |
[프로그래머스] 숫자 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.25 |
[프로그래머스] 숫자 변환하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.21 |
[프로그래머스] 완주하지 못한 선수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.19 |
[프로그래머스] 롤케이크 자르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.17 |
[프로그래머스] 체육복 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.15 |