반응형
[문제 출처]
https://school.programmers.co.kr/learn/courses/30/lessons/140108
[문제 풀이]
주어진 문자열 s를 첫 글자부터 읽는다. 첫 글자를 x라고 할 때,
문자열을 계속해서 읽으면서 x의 개수와 x가 아닌 문자의 개수가 같아지는 순간에 문자열을 분리한다.
그 후 분리한 다음 글자를 x로 하고 이전의 과정을 반복한다.
이렇게 해서 몇 개의 문자열로 분리되는지 구하는 문제이다.
만일 x와 x가 아닌 문자의 개수가 동일하지 않은 상태에서 더 이상 남은 문자가 없어서 끝난 경우에도 분리하도록 한다.(문자열의 개수가 증가)
a(x의 개수), b(x가 아닌 문자의 개수)로 두고, 주어진 문자열을 처음부터 읽으면서 x와 동일할 경우 a를, 그렇지 않을 경우는 b를 증가시킨다.
증가시킨 후에, a와 b가 같다면 문자열을 분리해 준다.
문자열의 개수를 나타내는 answer을 증가시키고, x를 변경해 주기 위해서 change변수를 1로 변경해 준다.
모든 문자를 다 읽은 후에 a와 b가 같지 않다면 분리되지 않은 것이지만, 이런 경우에도 분리해야 하기에 1을 증가시킨다.
(분리된 경우 a와 b가 0으로 바뀌기에 두 수는 같아짐)
✅소스 코드
def solution(s):
answer = 0
x = s[0]
a = 0
b = 0
change = 0
for i in s:
if change == 1:
change = 0
x = i
if x == i:
a += 1
else:
b += 1
if a == b:
change = 1
answer += 1
a = 0
b = 0
if a != b:
answer += 1
return answer
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 프로그래머스 Lv.1 푸드 파이트 대회 (0) | 2023.03.06 |
---|---|
[python/파이썬] 프로그래머스 Lv.1 과일장수 (0) | 2023.03.03 |
[python/파이썬] 백준 1543 문서 검색 (0) | 2023.02.27 |
[python/파이썬] 백준 1173 운동 (0) | 2023.02.24 |
[python/파이썬] 백준 24266 24267 알고리즘 수업 - 알고리즘의 수행시간 (0) | 2023.02.23 |