[백준 | Javascript] 10820

박기영·2022년 9월 6일
0

백준

목록 보기
104/127

기초 알고리즘 1/2. 200 - 자료 구조 1(참고)
10820번. 문자열 분석

문제

10820번 문제 링크

solution

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으로 될 것 같지만...
출력하라는 말이 없기 때문에 그냥 넘겨야한다.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글