단어 세기

  • 해당 강의에서는 C++의 string.h 라이브러리 내 strtok() 함수를 사용하여 해결하였으나 자바스크립트에서는 널 포인트를 사용하지 않기 때문에 따로 구현하고 넘어감
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const countWords = p => {
let divide = p.split('\n').map(el => el.split(' '))
for(let i = 0; i < divide.length; i++) {
let result = [];
for (let j = 0; j < divide[i].length; j++){
let fCondition = divide[i][j];
// 객체 내의 원소를 받고 해당 원소로 배열을 필터
// 필터된 배열의 길이가 해당 아이템의 숫자가 됨
let cnt = divide[i].filter(el => el === fCondition).length;
let element = `${fCondition} : ${cnt}`
if(!result.includes(element))
result.push(element)
}
result = result.sort((a,b) => a.charCodeAt() - b.charCodeAt())
console.log(result);
}
}
  • 출력 예제와 다른 점 : sort()함수를 사용하여 ASCII 값을 비교하여 정렬하였으나 출력 예제의 ‘A : 1’, ‘AM : 2’, ‘DOG : 4’, ‘I : 2’와는 달리 ‘AM : 2’, ‘A : 1’, ‘DOG : 4’, ‘I : 2’로 출력되었다
  • 어떻게 해결하면 될까?를 고민해봐야 함