레벨2를 집중적으로 풀던 중 레벨1에 새로운 문제가 추가되어 풀어본 문제이다. 수를 계속 세야하므로 while문, 재귀함수 혹은 stack등 다양한 풀이가 있겠으나 제일 구현하기 쉬운 while문으로 풀어보았다.
문자열이 하나 남는경우만 잘 처리해준다면 까다롭지 않은 문제였던 것 같다.
나는 python의 list slicing을 이용하여 첫번째 문자 x와 x가 아닌 문자들이 갯수가 같아질 때마다 전체 문자열 s를 줄여주고, 문자열이 남은 경우 답을 하나 더해줌으로써 해결하였다.
def solution(s):
answer = 0
i,j = 0, 1
# cnt1은 첫번째 문자를 카운트하기 위한 용도이므로 미리 1로 지정하고, 반복문 시작구간을 첫번째문자 +1로함
cnt1, cnt2 = 1, 0
while i < len(s):
standard = s[0]
while j < len(s):
if s[j] == standard:
cnt1 += 1
else:
cnt2 += 1
if cnt1 == cnt2:
answer += 1
cnt1, cnt2 = 1, 0
# list slicing으로 문자열을 줄여감
s = s[j+1:]
j = 1
break
j += 1
i = j
# s가 남아있을 경우 1을 더해주면 됌(ex:테스트 케이스2)
if s:
answer += 1
return answer
'Algorithm' 카테고리의 다른 글
프로그래머스: 게임 맵 최단거리(파이썬, DFS, BFS) (0) | 2022.12.14 |
---|---|
프로그래머스: 햄버거 만들기(파이썬, 스택) (0) | 2022.12.05 |
프로그래머스: 전화번호 목록 (파이썬, hash, dictionary) (0) | 2022.12.05 |
프로그래머스: 숫자블록 (파이썬, 구현) (1) | 2022.11.30 |
백준 17135번: 캐슬 디펜스 (파이썬, 완전탐색, 구현) (0) | 2022.09.07 |