[프로그래머스 | JS] Lv0. 문자 개수 세기

HICHULOG·2023년 10월 19일
0

프로그래머스

목록 보기
31/38
post-thumbnail

문자 개수 세기

📝 문제

알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.

⛔️ 제한 사항

  • 1 ≤ my_string의 길이 ≤ 1,000

👁️ 입출력 예

my_stringresult
"Programmers"[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]

💡 풀이

function solution(my_string) {
    const result = Array(52).fill(0);

    for(let i=0; i<my_string.length; i++){
        let alpha = my_string.charCodeAt(i);
        if(alpha>=65 && alpha<=90){
            result[alpha-65]++;
        }else{
            result[alpha-71]++;
        }
    }
    return result;
}

=> 처음에는 대문자A~Z,소문자a~z까지 모두 적어 구하려했지만 String.charCodeAt()으로 해당 문자의 아스키코드 값을 얻어 사용했다.

✅ 다른 풀이

function solution(m) {
    var answer = [];
    let al = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    let a = [];
    a.length = 52;
    a.fill(0);

    m.split("").map((n)=>{
        a[al.indexOf(n)]+=1
    })

    return a;
}

=> 대문자,소문자 다 쓰고도 간단하게 구하는 풀이가 있었다.

🚀 TIL

profile
🚀 Front-end Dev

0개의 댓글