문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.
s result
"banana" 3
"abracadabra" 6
"aaabbaccccabba" 3
이중 for문을 사용하고 마지막 나머지 문자들을 처리하느라 시간이 좀 오래걸리고 고생한 코드이다.
1. for
문으로 문자열의 문자들을 꺼내어 비교해주고
2. 문자들을 사용한 후에 입력값 s
를 사용한 문자들을 제거 후 재 사용해주는 재귀용법이다.
3. 조건대로 문자열이 생성이 안되더라도 나머지 문자들을 처리해주는 방법 또한 고려해야한다.
def solution(s):
answer = []
s2 = ''
for s1 in s:
s2+=s1
if s2.count(s2[0]) == len(s2)/2 or len(s) == 1 or len(s2) == len(s):
s = s[len(s2):]
answer.append(s2)
s2 = ''
return len(answer)
answer
변수를 리스트로 설정해준다. 이 리스트에 해당되는 문자열을 넣은 후 개수를 세어 리턴해줄 것이다.s2
는 새롭게 생성되는 문자열로 초기화를 먼저 해준다.for
문으로 문자열 s
에서 한 문자씩 빼내어 s1
변수에 담고 사용해준다.s2
에 s1
을 계속 더해주어 문자열을 새롭게 생성해주고s2
문자열에서 첫 번째 문자 s2[0]
의 개수가 s2
의 총 문자 개수의 절반과 같다면 if
문에 들어가도록 해준다. if
문에 들어가게되면 문자열 s
에서 s2
를 빼내어 다시 정의해주고 answer
변수에 s2
를 추가해주며 s2
를 초기화해준다. if
문의 다른 조건이 두 개 더 있는데 첫 번째는 문자열 s
가 마지막 문자 한 개를 빼고 나머지가 다 추출 되었을 때 해당 한 개의 문자를 answer
에 추가해주는 조건문이고,answer
에 추가해주도록 한다.(예시 s = 'baaa' 가 있다.)