https://school.programmers.co.kr/learn/courses/30/lessons/140108
입출력 예 #1
s="banana"인 경우 ba - na - na와 같이 분해됩니다.
입출력 예 #2
s="abracadabra"인 경우 ab - ra - ca - da - br - a와 같이 분해됩니다.
입출력 예 #3
s="aaabbaccccabba"인 경우 aaabbacc - ccab - ba와 같이 분해됩니다.
문제: x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.
==> 이에따라
첫번째 글자수(firstCount)와
첫번째글자가 아닌 다른 글자의 수(elseCount)를 비교해서, 같으면 answer++해줌.
그리고 분리될때, first 문자가 바뀌므로
first=s[i+1]
입출력 예 2번처럼, ab - ra - ca - da - br - a
이 경우에는firstCount!==elseCount
이므로,
answer++ 예외처리해줌.
function solution(s) {
var answer = 0;
let first = s[0]
let firstCount=1
let elseCount=0
for(let i=1;i<s.length;i++){
if(first!==s[i]){
elseCount++
}else{
firstCount++
}
if(elseCount===firstCount){
answer++
first=s[i+1]
console.log(first)
}
}
if(firstCount!==elseCount){
answer++
}
return answer;
}
나랑비슷한 방법으로 푸셧는데, count 하나로 이용하심
function solution(s) {
let answer = 0;
let current;
let count = 0;
for(let i = 0; i < s.length; i++) {
if(count === 0) {
answer++;
current = s[i]
count = 1
} else {
if(current !== s[i]) count--;
else count++;
}
}
return answer;
}