문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
단순한 반복으로 만들어진 풀이인데,,, 직관적이긴 하지만 더 좋은 풀이가 있을까 고민하게 되는 코드이다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on('line', (line) => {
input.push(line);
});
rl.on('close', () => {
console.log(solution(input));
});
function solution(string_array) {
let answer = Array.from({ length: string_array.length }, () => []);
for (let i = 0; i < string_array.length; i++) {
answer[i].push(
string_array[i].match(/[a-z]/g)
? string_array[i].match(/[a-z]/g).length
: 0
);
answer[i].push(
string_array[i].match(/[A-Z]/g)
? string_array[i].match(/[A-Z]/g).length
: 0
);
answer[i].push(
string_array[i].match(/[0-9]/g)
? string_array[i].match(/[0-9]/g).length
: 0
);
answer[i].push(
string_array[i].match(/\s/g) ? string_array[i].match(/\s/g).length : 0
);
answer[i] = answer[i].join(' ');
}
return answer.join('\n');
}