728x90

문제


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

 

10820번: 문자열 분석

문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있

www.acmicpc.net

 

코드


//브론즈2 문자열 분석
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\r\n");
//다른 문제들과달리 input에 trim()을 빼주는 이유는 trim() 함수를 통해 빈 문자열이 없어지기 때문이다. 입력값으로 (의도적으로)빈 문자열이 들어온다면 trim()이 자동으로 없애주는 상황을 막아야 한다.

//빈 문자열이 주어졌을 경우에 대한 예외처리
let except = input.filter((str) => str.length < 1);
if (except.length) input.splice(input.indexOf(except[0]), 1);

//각 문자열에 대해 전체문자열 길이에서 정규식을 이용하여 각 조건에맞는 길이 빼주기
input.forEach((str) => {
  let lower = str.length - str.replace(/[a-z]/g, "").length;
  let upper = str.length - str.replace(/[A-Z]/g, "").length;
  let num = str.length - str.replace(/\d/g, "").length;
  let blank = str.length - str.replace(/\ /g, "").length;

  console.log(lower, upper, num, blank); //number형으로 각각 출력
});

 

후기


 

JS | trim() : 문자열 공백 제거

간단해보여도 알고리즘 문제를 풀 때 꼭 필요한 trim() 소개

velog.io

+ Recent posts