문제 설명
첫 번째 인자로 문자열을, 두 번째 인자로 단일 문자 하나를 받는 JavaScript 함수를 작성해야 합니다.
이 함수는 지정된 문자가 문자열 안에서 연속적으로 나타나는 가장 긴 횟수를 세어 그 값을 반환해야 합니다.
예제 코드
다음은 전체 구현 코드입니다.
const str = 'abcdaaadse';
const char = 'a';
const countChars = (str = '', char = '') => {
const arr = str.split('');
let c = 0, max = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] === char) {
c += 1;
if (c > max) {
max = c;
};
} else {
if (c > max) {
max = c;
};
c = 0;
};
};
return max;
};
console.log(countChars(str, char));
출력 결과
3
코드 동작 원리
위 코드의 핵심 로직을 단계별로 살펴보겠습니다.
- 문자열 분리:
split('')을 사용해 문자열을 개별 문자 배열로 변환합니다. - 카운터 초기화: 현재 연속 횟수를 저장하는
c와 최댓값을 저장하는max를 0으로 초기화합니다. - 순회하며 비교: 배열을 순회하면서 현재 문자가 찾고자 하는 문자와 일치하면
c를 1씩 증가시키고, 필요하면max를 갱신합니다. - 연속 끊김 처리: 일치하지 않는 문자를 만나면 지금까지의
c값과max를 비교한 뒤,c를 0으로 초기화해 새로운 연속 구간을 시작합니다. - 결과 반환: 모든 순회가 끝나면
max를 반환합니다.
예제 문자열 'abcdaaadse'에서 문자 'a'는 마지막에 'aaa'로 3번 연속 등장하므로, 결과값은 3이 됩니다.