영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.
첫째 줄에 단어의 개수를 출력한다.
처음엔 trim을 안해도 filter에서 공백이 걸러진다고 생각했다.
공백이 있는 문자에 split(' ')을 하면 공백이 포함되서 배열이 만들어진다.
이걸 filter를 이용해 공백을 걸러낸 배열의 길이를 출력하면 될 줄 알았는데 안된다.
trim을 안쓰고 안되는 이유를 잘 모르겠다...
결국 trim을 써서 문자열의 공백을 없애고 공백기준으로 나눠 length를 구했다.
추가로 filter를 사용한 이유는, [""]같은 결과가 나올 수도 있기에 이런 경우도 걸러내기 위해 사용했다.
더 간단하게 삼항연산자로도 할 수 있겠지만, 나는 이 풀이가 좋다..ㅎ
const input = require("fs").readFileSync("/dev/stdin").toString();
console.log(
input
.trim()
.split(" ")
.filter(x=>x!=='').length
);