문자 개수 세기😀
알파벳 대소문자로만 이루어진 문자열 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;
}
-
var answer = Array(52).fill(0);: 길이가 52인 배열을 생성하고, 모든 원소를 0으로 초기화합니다. 이 배열은 각 알파벳의 개수를 저장하는 용도로 사용됩니다.
-
for (var i = 0; i < my_string.length; i++) {: 문자열을 순회하는 반복문입니다.
-
var charCode = my_string.charCodeAt(i);: 현재 순회 중인 문자의 ASCII 코드를 구합니다.
-
if (65 <= charCode && charCode <= 90) {: 대문자인 경우를 체크합니다. ASCII 코드상에서 대문자 ‘A’부터 ‘Z’까지는 65부터 90까지의 범위에 속합니다.
answer[charCode - 65]++;: 현재 대문자의 ASCII 코드에서 ‘A’의 ASCII 코드(65)를 뺀 값이, 배열 answer에서 해당 알파벳의 인덱스입니다.
그 인덱스의 값을 증가시켜 해당 알파벳의 개수를 세게 됩니다. -
else if (97 <= charCode && charCode <= 122) {: 소문자인 경우를 체크합니다.
ASCII 코드상에서 소문자 ‘a’부터 ‘z’까지는 97부터 122까지의 범위에 속합니다.
answer[charCode - 71]++;: 소문자의 경우, 대문자와 구분하기 위해 인덱스를 올바르게 계산하기 위해 71을 빼줍니다. 그 후, 해당 알파벳의 개수를 세게 됩니다. -
최종적으로 answer 배열을 반환합니다. 이 배열은 주어진 문자열에서 각 알파벳의 개수를 담고 있습니다.