본문 바로가기
JS/백준

[백준JS] 1152. 단어의 개수 (반례 설명 포함)

by 박기린 2023. 3. 15.

안녕하세요. 박기린 입니다.

백준 1152번 단어의 개수 문제를 풀어봅시다.

 

 

문제 링크

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

 

 

 


문제 해석 / 반례

영어 단어와 공백으로 이루어진 한 문장을 입력받으면, 그 문장에 단어가 몇 개가 있는 지를 출력해주면 되는 쉬운 문제입니다.

다만, 중간에 함정 반례를 피하지 못해 오답이 뜨는 경우가 있습니다.

 

그 반례는 바로 입력이 공백 (" ")으로만 주어지는 경우입니다.

 

 

 


정답 코드

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
if (input.length === 1 && input[0] === "") {
  result = 0;
} else {
  result = input.length;
}

console.log(result);

 

 

 

 


정답 코드 풀이

const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");

fs 모듈로 입력을 받아올 때,

1. trim()을 이용해서, 문장의 앞 뒤 공백이 주어지는 경우를 방지합니다.
2. split()을 이용해서, 문장을 띄어쓰기 단위로 나누어서 Array에 담습니다.

여기까지 하면, input.length를 console.log()로 출력하면 끝이라고 판단할 수 있습니다. 하지만 반례인 입력이 공백 (" ")으로만 주어지는 경우를 방지해야 합니다.

 

 

 

 

 

if (input.length === 1 && input[0] === "") {
  result = 0;
} else {
  result = input.length;
}

Array의 길이가 1이면서, 그 element가 빈 String("")일 경우, 단어의 개수를 0으로 지정합니다.

이러면 반례에 당하지 않습니다.

반응형