[BJ / 10820] 문자열 분석

Lainlnya·2023년 3월 31일
0

BaekJoon

목록 보기
21/37

문제

문자열 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');
}
profile
Growing up

0개의 댓글