알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.
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) {
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;
}
=> 대문자,소문자 다 쓰고도 간단하게 구하는 풀이가 있었다.