[boj] 10820. 문자열 분석 (node.js)

호이·2022년 4월 27일
0

algorithm

목록 보기
60/77
post-thumbnail

문제 요약

[boj] 10820. 문자열 분석 (node.js)

내 풀이

  • 문제의 요구조건에 따라 조건문을 활용하면 무리 없이 구현할 수 있는 간단한 문제였다. 하나씩 구현했고, N도 100을 넘지 않아 수월하게 풀이했으나, 시간복잡도도 높고 풀이법이 아쉬웠다.
  • 더 나은 방법이 있었다! char로 변환한 후 풀이해야 하는지를 고민하다 isNaN으로 비교하는 방법을 택했는데,
"A".charCodeAt(0); // 65
"a".charCodeAt(0); // 97
  • 알파벳 소문자 > 대문자 > 숫자 순으로 charCode의 크기가 나타나므로, 이 모든 걸 부등식으로 비교해볼 수 있다.
  • 참고한 풀이

전체 코드

const readline = require("readline");
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

const solution = () => {
  const N = stdin.length;
  let results = [];
  stdin.forEach((line) => {
    let [lower, upper, num, blank] = [0, 0, 0, 0];
    line.split("").forEach((elem) => {
      if (elem == " ") blank++;
      else if (isNaN(elem)) {
        if (elem.toLowerCase() == elem) lower++;
        else upper++;
      } else num++;
    });
    results.push([lower, upper, num, blank].join(" "));
  });
  console.log(results.join("\n"));
};

let _line = 0;
const input = () => stdin[_line++];

let stdin = [];
rl.on("line", function (line) {
  stdin.push(line);
}).on("close", function () {
  solution();
  process.exit();
});
profile
매일 부활하는 개복치

0개의 댓글