Algorithm_javascript/5. 문자열

백준 1152번 단어의 개수 (javascript, node.js)

luminouswy 2023. 5. 20. 16:38
반응형

문제

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

입력

  • 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.

출력

  • 첫째 줄에 단어의 개수를 출력한다.

예제입력 1

The Curious Case of Benjamin Button

예제출력 1

6


문제풀이

  • 단어의 개수를 찾는 문제
  • 정규표현식으로 해보려고 했는데 잘 안됨
  • 찾아보니 단순하게 split(' ')으로 공백을 나눠줘서 길이를 출력하면됨
  • 테스트케이스가 있어서 처리해줘야함
//1152번
//단어의 개수
//주어진 문자열의 단어 개수를 구하기
// 오답이 많음, 이유는 '' 빈문자열이 테스트 케이스로 들어오기 때문에 예외처리 해줘야함
// 정규표현식으로 빈공간을 처리해서 하려고했는데 그럴 필요 없이
// 그냥 input 값을 split로 띄어쓰기 부분으로 나눠서 길이 재면됨

// 문제에서 공백이 연속해서 나오는 경우는 없다고 했으니 공백은 따로 구분안해도됨

const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split(" ");

// 빈 값만 들어오는 테스트케이스가 있어서 0처리 해줘야됨
console.log(input[0] === "" ? 0 : input.length);

// 정규표현식으로 해보려고했는데 런타임 에러남 ㅠㅠ
// const input = fs.readFileSync(file).toString().trim();
// const x= input.match(/\s/g);
// console.log(input[0] === "" ? 0 : x.length +1 );