문제 소개
문자열 안에 두 번 이상 등장하는 단어가 있을 때, 그러한 단어의 개수를 세는 JavaScript 함수를 작성해야 합니다.
예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다 −
const str = "car bus jeep car jeep bus motorbike truck";
이 문자열에서 'car', 'bus', 'jeep' 세 단어가 각각 두 번씩 반복되므로, 출력 결과는 다음과 같아야 합니다 −
3
예제 코드
다음은 위 문제를 해결하는 코드입니다 −
const str = "car bus jeep car jeep bus motorbike truck";
const countRepetitive = str => {
const strArr = str.split(" ");
let count = 0;
for(let i = 0; i < strArr.length; i++){
if(i === strArr.lastIndexOf(strArr[i])){
continue;
};
count++;
};
return count;
};
console.log(countRepetitive(str));
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다 −
3
코드 동작 원리
이 코드의 핵심 로직을 단계별로 살펴보겠습니다.
- split(" "): 입력받은 문자열을 공백을 기준으로 분할하여 단어 배열을 생성합니다.
- lastIndexOf(): 현재 순회 중인 인덱스와 해당 단어가 배열에서 마지막으로 등장하는 인덱스를 비교합니다.
- 두 값이 서로 같다면 그 단어의 마지막 등장 지점이므로
continue로 건너뛰고, 그렇지 않다면 중복 등장으로 판단하여 카운트를 1 증가시킵니다.
결국 이 방식은 각 단어의 마지막 등장 위치만 제외하고 나머지 등장 횟수를 모두 더하는 것과 같으므로, 반복적으로 나타나는 단어의 개수를 정확히 구할 수 있습니다.