기초 알고리즘 1/2. 200 - 자료 구조 1(참고)
10820번. 문자열 분석
const fs = require("fs");
let inputs = fs.readFileSync("/dev/stdin").toString().split("\n");
const iter = inputs.length;
let ans = [];
for(let i = 0; i < iter; i++){
let input = inputs[i].split("");
// 만약 빈 문자열이 들어오면 다음 문자열로 넘겨준다.
if(input.length === 0) continue;
// 배열의 각 원소는 소문자, 대문자, 숫자, 공백의 개수를 의미함.
let strArr = [0,0,0,0];
for(let str of input){
let ascii = str.charCodeAt();
if(ascii >= 97 && ascii <= 122){
strArr[0]++;
} else if(ascii >= 65 && ascii <= 90){
strArr[1]++;
} else if(ascii >= 48 && ascii <= 57){
strArr[2]++;
} else if(ascii === 32) {
strArr[3]++;
}
}
ans.push(strArr.join(" "));
}
console.log(ans.join("\n"));
문제 자체는 굉장히 쉬운데, 빈 문자열이 들어오는 경우에 대한 말이 없어서 헤맸다.
계속 틀리길래 접근을 잘못하고 있나했더니, 빈 문자열은 안 들어온다는 조건이 없었다는 걸 간과했다.
빈 문자열은 소문자, 대문자, 숫자, 공백 중 그 무엇도 들어있지않기 때문에 출력이 0 0 0 0으로 될 것 같지만...
출력하라는 말이 없기 때문에 그냥 넘겨야한다.