제출하는데 계속 틀리길래 뭐가 문젠가 싶었는데 빈 문자열 일 때 출력없이 그냥 넘겨야 했다.
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n')
const isLowerCase = str => str===str.toLowerCase() && str!== ' '
const isUpperCase = str => str===str.toUpperCase() && str!== ' '
const isNumber = str => Number.isInteger(Number(str)) && str !== ' '
const isBlank = str => str=== ' '
let answer = ''
for(let i=0; i<input.length; i++){
if(input[i].length === 0) continue;
let [lower, upper, number, blank] = [0,0,0,0]
input[i].split('').forEach(e=>{
if(isBlank(e)){
blank++
}
else if(isNumber(e)){
if(e === '\r'){
return;
}
number++
}
else if(isLowerCase(e)){
lower++
}
else if(isUpperCase(e)){
upper++
}
})
answer += `${lower} ${upper} ${number} ${blank} \n`
}
console.log(answer.trim())
줄바꿈 부호도 isNumber 함수에서 걸리길래 검색해보니 ASCII코드에서 걸리는 것 같았다. 때문에 isNumber함수에서 숫자를 판별하기전에 줄바꿈부호를 먼저 걸러주었다.