[Lv.0] 문자 개수 세기

woodstock·2024년 2월 10일
0

코딩테스트

목록 보기
39/56
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 함수를 작성하는 문제이다.

풀이

function solution(my_string) {
    const counts = new Array(52).fill(0);    
    for (let i = 0; i < my_string.length; i++) {
        let asciiCode = my_string.charCodeAt(i);
        if (asciiCode >= 97) {
            counts[asciiCode - 71]++;
        } else {
            counts[asciiCode - 65]++;
        }
    }    
    return counts;
}

풀이해설

const counts = new Array(52).fill(0);   
  • 52개 요소의 배열을 생성하고 모두 0으로 초기화한다.
  • 여기서 52는 알파벳 대문자(26)와 소문자(26)를 합한 수이다.

let asciiCode = my_string.charCodeAt(i);
  • charCodeAt메서드는 문자열에서 특정 위치의 문자를 ASCII 코드 값(숫자 형태)으로 변환해준다.
  • 변수 asciiCode를 선언하고, my_stringi번째 문자의 ASCII 코드 값을 이 변수에 저장한다.

// 현재 문자가 소문자인지 확인한다.
// 소문자의 ASCII 코드 범위는 97('a')부터 122('z')
if (asciiCode >= 97) {
    counts[asciiCode - 71]++;
} else {
  	// 대문자의 ASCII 코드 범위는 65('A')부터 96('Z')
    counts[asciiCode - 65]++;
}
  • 소문자인 경우: ASCII 코드에서 71을 빼서 배열의 인덱스를 계산한다.
    예를 들어, 'a'의 ASCII 코드는 97이므로, 인덱스는 97 - 71 = 26이 된다.
  • 대문자인 경우: ASCII 코드에서 65를 빼서 배열의 인덱스를 계산한다.
    예를 들어, 'A'의 ASCII 코드는 65이므로, 인덱스는 65 - 65 = 0이 된다.

function solution(my_string) {
    const counts = new Array(52).fill(0);
  
  	// 문자열 my_string의 각 문자에 대해 반복한다.
    for (let i = 0; i < my_string.length; i++) {
        let asciiCode = my_string.charCodeAt(i);
        if (asciiCode >= 97) {
            counts[asciiCode - 71]++;
        } else {
            counts[asciiCode - 65]++;
        }
    }
  	// 계산된 출현 횟수 배열을 반환한다.
  	// 이 배열은 각 알파벳 문자가 my_string 내에 나타나는 횟수를 순서대로 저장한다.
    return counts;
profile
해내는 사람

0개의 댓글