Developer. Designer

프로그래머스 기초트레이닝 Day11-1

문자 개수 세기😀

알파벳 대소문자로만 이루어진 문자열 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_string result
“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) {
  var answer = Array(52).fill(0); // 0으로 초기화된 길이 52의 배열 생성

  for (var i = 0; i < my_string.length; i++) {
    var charCode = my_string.charCodeAt(i);

    if (65 <= charCode && charCode <= 90) {
      // 대문자인 경우 (A부터 Z까지)
      answer[charCode - 65]++;
    } else if (97 <= charCode && charCode <= 122) {
      // 소문자인 경우 (a부터 z까지)
      answer[charCode - 71]++;
    }
  }

  return answer;
}
  1. var answer = Array(52).fill(0);: 길이가 52인 배열을 생성하고, 모든 원소를 0으로 초기화합니다. 이 배열은 각 알파벳의 개수를 저장하는 용도로 사용됩니다.

  2. for (var i = 0; i < my_string.length; i++) {: 문자열을 순회하는 반복문입니다.

  3. var charCode = my_string.charCodeAt(i);: 현재 순회 중인 문자의 ASCII 코드를 구합니다.

  4. if (65 <= charCode && charCode <= 90) {: 대문자인 경우를 체크합니다. ASCII 코드상에서 대문자 ‘A’부터 ‘Z’까지는 65부터 90까지의 범위에 속합니다.
    answer[charCode - 65]++;: 현재 대문자의 ASCII 코드에서 ‘A’의 ASCII 코드(65)를 뺀 값이, 배열 answer에서 해당 알파벳의 인덱스입니다.
    그 인덱스의 값을 증가시켜 해당 알파벳의 개수를 세게 됩니다.

  5. else if (97 <= charCode && charCode <= 122) {: 소문자인 경우를 체크합니다.
    ASCII 코드상에서 소문자 ‘a’부터 ‘z’까지는 97부터 122까지의 범위에 속합니다.
    answer[charCode - 71]++;: 소문자의 경우, 대문자와 구분하기 위해 인덱스를 올바르게 계산하기 위해 71을 빼줍니다. 그 후, 해당 알파벳의 개수를 세게 됩니다.

  6. 최종적으로 answer 배열을 반환합니다. 이 배열은 주어진 문자열에서 각 알파벳의 개수를 담고 있습니다.