[Algorithm] 백준 1152 (javaScript)

swing·2023년 6월 9일
0

[Algorithm]

목록 보기
13/96

문제

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

입력

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 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
);

BOJ 1152

profile
if(기록📝) 성장🌱

0개의 댓글