공백으로 연결된 문자열을 입력받아, 해당 문자열에 포함된 모든 단어의 평균 길이를 계산한 뒤 소수점 둘째 자리까지 반올림하여 반환하는 JavaScript 함수를 작성해야 합니다.
예를 들어 'This sentence will be used to calculate average word length'라는 문자열이 주어지면, 각 단어의 길이를 합산해 단어 개수로 나눈 평균 값을 구해야 합니다.
해결 방법
이 문제는 다음과 같은 논리로 접근할 수 있습니다.
- 문자열에 공백이 없다면 단어가 하나뿐이므로, 문자열 전체 길이를 그대로 반환합니다.
- 공백이 있다면 split() 메서드로 단어 개수를 구합니다.
- 전체 문자열 길이에서 공백 개수(단어 수 − 1)를 빼면 순수하게 단어를 이루는 문자 수가 됩니다.
- 이 값을 단어 개수로 나누고, toFixed(2)로 소수점 둘째 자리까지 반올림합니다.
예제 코드
다음은 위 로직을 구현한 코드입니다.
const str = 'This sentence will be used to calculate average word length';
const averageWordLength = str => {
if(!str.includes(' ')){
return str.length;
};
const { length: strLen } = str;
const { length: numWords } = str.split(' ');
const average = (strLen - numWords + 1) / numWords;
return average.toFixed(2);
};
console.log(averageWordLength(str));
console.log(averageWordLength('test test'));실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
5.00 4.00
코드 설명
'test test'의 경우 전체 길이는 9이고, 단어는 2개입니다. 여기서 공백 1개를 제외하면 단어를 구성하는 문자는 총 8개이며, 이를 단어 수 2로 나누면 평균 길이 4.00이 됩니다. 첫 번째 예제 역시 같은 방식으로 계산되어 5.00이 출력됩니다.