[프로그래머스][Python] 문자열 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/140108#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
아이디어
문제 자체는 간단하다.
target 원소 나온 횟수 세고 target이 아닌 다른 원소가 나온 횟수를 세서 같으면 분해하고
분해한 문자열 개수를 세면 된다.
코드
def solution(s):
answer = 0
target, other = 1, 0
x = s[0]
renewal = False # 갱신 여부
remain = True # 끝나는 지점에서 뒤에 원소 남았는지
for i in range(1, len(s)):
if renewal:
x = s[i]
renewal = False
target, other = 1, 0
else:
if x == s[i]:
target += 1
else:
other += 1
if target == other:
answer += 1
renewal = True # x 갱신
if i == len(s)-1: # 마지막 인덱스라면
remain = False
if remain == True: # 끝난 지점에 마지막 인덱스가 아니면
answer += 1
return answer
위는 내가 풀어서 맞은 코드이다. 딱 봐도 길어 보이고 변수가 너무 많다
def solution(s):
answer = 0
cnt1,cnt2=0,0
for i in s:
if cnt1==cnt2:
answer+=1
k=i # 기준 문자 설정
if k==i:
cnt1+=1
else:
cnt2+=1
return answer
이건 다른 분이 푼 코드인데 이렇게 푸는 방식이 더 마음에 든다.
횟수 비교하는 걸 처음에 넣고 answer도 + 1 해주는게 포인트이다. 나는 자꾸 뒤에서 하려다보니 변수도 많아지고 그랬다.
'Algorithm > 알고리즘 문제' 카테고리의 다른 글
[프로그래머스][Python] 로또의 최고 순위와 최저 순위 (0) | 2023.10.10 |
---|---|
[프로그래머스][Python] 체육복 (0) | 2023.10.10 |
[프로그래머스][Python] 둘만의 암호 (0) | 2023.10.10 |
[프로그래머스][Python] 공원 산책 (1) | 2023.10.09 |
[프로그래머스][Python] 완주하지 못한 선수 (1) | 2023.10.09 |