프로그래머스 문자 개수 세기 문제 풀이

KUKJIN LEE • 2일 전 작성
function solution(my_string) {
var answer = new Array(52).fill(0);
for(let char of my_string) {
const specificChar = char.charCodeAt(0);
if(specificChar >= 65 && specificChar <= 90) {
answer[specificChar -65]++;
} else if(specificChar >= 97 && specificChar <= 122) {
answer[specificChar - 97 + 26]++;
}
}
return answer;
}
문제 설명 및 핵심 포인트
주어진 문자열에서 알파벳의 등장 횟수를 세는 문제입니다.
대소문자를 구분해서 각각 몇 번 나왔는지, 총 52개의 빈도를 기록하는 배열을 반환해야 합니다.
✅ 코드 설명
1. 배열 초기화
new Array(52).fill(0)
-
대문자 26개 + 소문자 26개 = 총 52칸짜리 배열을
0
으로 초기화합니다.
2. 문자 순회
for (let char of my_string)
-
문자열의 각 문자를 하나씩 순회하면서 처리합니다.
3. 유니코드(charCode) 활용
const code = char.charCodeAt(0)
-
문자를 유니코드 값으로 변환합니다.
-
예를 들어
"C"
→ 67,"a"
→ 97
4. 대소문자 구분하여 인덱스 계산
-
대문자
A~Z
: 유니코드 65~90 (배열 인덱스는code - 65
) -
소문자
a~z
: 유니코드 97~122 (배열 인덱스는code - 97 + 26
)
(소문자는 배열 26번부터)
🎯 개념 정리
이 문제의 핵심은 아래와 같은 기초적인 CS 개념을 얼마나 잘 이해하고 있는지를 묻습니다.
-
배열 생성 및 인덱스 연산
-
문자의 유니코드(charCode) 이해와 변환
-
조건문을 통한 대소문자 분기 처리
-
배열의 특정 인덱스에 접근해 값을 증가시키는 로직