function solution(s) {
let firstAlphabet = s[0];
let countFirst = 0;
let countOther = 0;
let answerCount = 0;
// 첫번째 글자 카운트 나머지 글자 카운트, 같은 경우 answer +=1 로 갯수만 추가
for(i=0; i<s.length; i++){
if(firstAlphabet === s[i]){
countFirst +=1
}
else{
countOther +=1;
if(countFirst === countOther){
answerCount +=1
countFirst =0
countOther =0
if(i!==s.length-1){
firstAlphabet = s[i+1]
}
}
}
if(i === s.length-1 && countFirst !== countOther){
answerCount +=1
}
}
return answerCount
}
내풀이-비교 count | 다른방법(1)-먼저 count | 다른방법(2)-재귀 | |
---|---|---|---|
시간 | |||
처음 count 1로 설정해주고, 첫 글자와 다음 글자 비교하여
같지 않은 경우 count--; 해주어서 answer를 먼저 증가시켜준다.
이렇게 하면 마지막 배열이 남는 경우를 추가고려하지 않아도 된다.
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;
}
function solution(s, count=0) {
if(!s) return count
let [first, ...rest] = s.split("")
let countSame = 1
let countInSame = 0
let i=0
for(; i<rest.length; i++){
if(rest[i] === first) countSame++
else countInSame++
if(countSame === countInSame) break
}
return solution(rest.slice(i+1).join(""), count+1)
}