최대 1 분 소요

문제

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

입력

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

출력

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

1152

해결 과정

  • 공백으로 단어가 구별되기 때문에 공백 +1 로 갯수 파악 => 실패
  • 문자열을 공백으로 분리하여 배열에 넣은 뒤 갯수 파악 => 성공
  • ‼️ 특수 케이스가 있어서 한번 더 생각해야 되는 문제(‘‘값 처리)
    • 입력받을 문자열 선언
    • 입력받은 문자열 앞뒤 공백 없애기 (trim())
    • 문자열이 ‘’ 일때 0 출력
    • 문자열에 단어가 있을 때 배열의 길이 출력
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdin
});

let input = [];

rl.on('line', function (line){
    input.push(line);

}).on('close',function (){

    let str = input[0].trim().split(' ');

    if (str[0] === ''){
        console.log(0)
    } else {
        console.log(str.length)
    }
});

쉽다고 생각하고 막 풀어서 한참 헤맨 문제. 테스트 케이스에 예외 사항도 넣어 줬다면…… 빈공간 갯수를 활용해서 구하는 방법 좀 더 생각해 봐야겠다.