728x90
문제 이해만 하면 어렵지 않은 문제.
"banana"를 예로 들면
맨처음 나오는 'b' 알파벳 기준으로 하며 cnt1의 값을 늘린다. (1)(cnt1은 기준과 같은 알파벳의 개수이다.)
다음 나오는 알파벳 'a'는 기준 'b'와 다르기 때문에 cnt2의 값을 1 늘린다.(1) (cnt2는 기준과 다른 알파벳의 개수이다.)
cnt1의 값과 cnt2의 값이 동일하므로 문자열을 잘라준다.
& cnt1, cnt2의 값을 초기화해준다.
다음 나오는 알파벳 'n' 알파벳 기준으로 하며 cnt1의 값을 늘린다.(1)
다음 나오는 알파벳 'a'은 기준 'n'와 다르기 때문에 cnt2의 값을 1늘린다.(1)
cnt1의 값과 cnt2의 값이 동일하므로 문자열을 잘라준다.
& cnt1, cnt2의 값을 초기화해준다.
다음 나오는 알파벳 'n' 알파벳 기준으로 하며 cnt1의 값을 늘린다.(1)
다음 나오는 알파벳 'a'은 기준 'n'와 다르기 때문에 cnt2의 값을 1늘린다.(1)
cnt1의 값과 cnt2의 값이 동일하므로 문자열을 잘라준다.
& cnt1, cnt2의 값을 초기화해준다.
총 3개의 문자열로 나눠졌기 때문에 정답은 3. 이런 방식으로 진행한다.
def solution(s):
cnt1, cnt2 = 0, 0
answer = 0
len_s = len(s)
standard = 0
for i in range(len_s): #주어진 문자열의 길이 만큼 반복문 진행
if standard == 0: #기준이 없을 때
standard = s[i]
if standard == s[i]: #기준과 문자가 같을 경우
cnt1+=1
else:
cnt2+=1 #기준과 문자가 다를 경우
if cnt1 == cnt2: #기준과 같은 문자의 수와 기준과 다른 문자의 수가 같을 경우
answer+=1 #문자열 수 하나 추가
cnt1, cnt2 = 0,0 #cnt 초기화
standard = 0 #기준 초기화
elif cnt1 != cnt2: #cnt가 서로 다를 때
if i == len_s - 1: #문자열의 끝에 도달하면
return answer+1 #문자열 수를 +1 하고 리턴
return answer
728x90
'프로그래머스 풀이' 카테고리의 다른 글
프로그래머스 -햄버거 만들기- LV1 (0) | 2023.01.08 |
---|---|
프로그래머스 -푸드 파이트 대회- LV1 (0) | 2023.01.08 |
프로그래머스 -과일 장수 - LV1 (0) | 2023.01.08 |
프로그래머스 -가장 가까운 같은 글자 - LV1 (0) | 2023.01.04 |
프로그래머스 -크기가 작은 부분 문자열 - LV1 (0) | 2023.01.04 |