문제 요약
[boj] 10820. 문자열 분석 (node.js)
내 풀이
- 문제의 요구조건에 따라 조건문을 활용하면 무리 없이 구현할 수 있는 간단한 문제였다. 하나씩 구현했고, N도 100을 넘지 않아 수월하게 풀이했으나, 시간복잡도도 높고 풀이법이 아쉬웠다.
- 더 나은 방법이 있었다! char로 변환한 후 풀이해야 하는지를 고민하다 isNaN으로 비교하는 방법을 택했는데,
"A".charCodeAt(0);
"a".charCodeAt(0);
- 알파벳 소문자 > 대문자 > 숫자 순으로 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();
});