문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/140108
소스 코드
def solution(string):
answer = 0
standard,others = '',''
standard_cnt,others_cnt = 0,0
for idx in range(len(string)):
# 기준 문자열이 없으면 첫글자로 설정
if not standard:
standard = string[idx]
if string[idx] == standard: # 기준 문자
standard_cnt += 1
else: others_cnt += 1 # 그 외 문자
# 개수가 동일하면 초기화 & 분해 개수 추가
if standard_cnt == others_cnt:
standard,others = '',''
standard_cnt,others_cnt = 0,0
answer += 1
# 마지막 문자 처리 안 된 경우 추가
if standard: answer += 1
return answer
해설
- 문자열에 대한 단순 구현
굳이 위처럼 기준이 되는 문자열과 그 개수를 나눌 필요가 있는지는 모르겠지만 단순히 생각나는대로 바로 구현했더니 이렇게 됐습니다..
1) for문을 살펴보면 기준 문자열이 없는 경우에는 탐색중인 인덱스의 문자열을 기준으로 삼습니다.
그리고 이 기준으로 비교하여 기준 문자열의 개수와 그 외 문자열의 개수를 카운팅합니다.
2) 둘의 개수가 동일해지면 분해되므로 정답 개수를 늘려주고 기준과 그 외 문자열 정보를 초기화해줍니다.
3) 마지막으로 맨 끝의 문자열이 분해되지 않은 상태로 남았는지 확인하여 정답 개수를 추가합니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 크기가 작은 부분문자열 (Python) (0) | 2023.02.22 |
---|---|
[프로그래머스] 가장 가까운 같은 글자 (Python) (0) | 2023.02.21 |
[프로그래머스] 명예의 전당 (1) (Python) (0) | 2023.02.17 |
[프로그래머스] 기사단원의 무기 (Python) (0) | 2023.02.16 |
[프로그래머스] 과일 장수(Python) (0) | 2023.02.15 |