문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답
function solution(s) {
// 문자열 s를 배열 형태로 만든다
const sArr = s.split("");
// x의 초깃값은 s의 첫 글자로 설정
let x = s.substring(0, 1);
let xCount = 0;
let yCount = 0;
let answer = 0;
// sArr를 순회하며 조건에 따라 answer를 더한다
for (let i = 0; i < sArr.length; i++) {
if (sArr[i] === x) {
// 현재 글자와 x가 같으면 xCount++
xCount++;
} else {
// 현재 글자와 x가 다르면 yCount++
yCount++;
}
// xCount가 0 이상이고 xCount와 yCount가 같은 경우:
// 문제에서 요구한 조건인 "x가 나타난 횟수", "x가 아닌 글자들이 나타난 횟수"가 동일한 경우이니 answer++
// 이때 x의 값은 남은 글자 중 첫 번째 글자로 바뀐다
// 또 xCount와 yCount는 초기화된다
if (xCount > 0 && xCount === yCount) {
answer++;
x = s.substring(i + 1, i + 2);
xCount = 0;
yCount = 0;
// 더 이상 다음 글자가 없는 경우:
// 문제의 조건에 부합하지 않더라도 문자열이 분리되어 answer++
} else if (i == sArr.length - 1) {
answer++;
}
}
return answer;
}