본문 바로가기
Problem Solving/boj.kr (JS)

[BOJ / 자바스크립트] 1152 : 단어의 개수

by hoiiiii 2022. 2. 26.

문제 : https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

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

www.acmicpc.net

 

Sol )

1. " "을 기준으로 문자열을 나눠서 배열로 입력받는다.

2. 배열 전체 길이를 result 변수에 저장

3. 배열의 첫 번째 값이 빈 값이면 (첫 번째 공백이 들어왔으면) result -= 1

4. 배열의 마지막 값이 빈 값이면 (마지막 공백이 들어왔으면) result -= 1

5. result = 단어의 개수

 

소스코드 )

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(" ");
let result = input.length;
if (input[0] === ""){
  result--;
}
if (input[input.length-1] === "\n"){
  result --;
}
console.log(result);

 

sol2 한줄코딩 ) 

1. 인풋 값을 " "을 기준으로 split() 해서 해당 배열을 돌면서 공백이 아닌 (단어인) 개수를 카운트해서 return 값을 console에 출력

 

한 줄 코딩 소스코드 ) 

console.log(require("fs").readFileSync("/dev/stdin").toString().split("\n")[0].split(" ").reduce((acc, cur) => {if (cur !== "") {acc++;}return acc;}, 0));


// 가독성 있게 다시 표현
console.log(
  require("fs")
    .readFileSync("/dev/stdin")
    .toString()
    .split("\n")[0]
    .split(" ")
    .reduce((acc, cur) => {
      if (cur !== "") {
        acc++;
      }
      return acc;
    }, 0)
);

댓글