본문 바로가기
기초다지기/JS 코딩테스트

[javascript] for..of / for문 / indexOf를사용한 알파벳 등장 횟수 계산

by 김빵그 2023. 8. 25.

문제

문자열 my_string이 주어질 때, A부터 z까지 알파벳 등장 횟수를 순서대로 담은 52의 정수 배열을 리턴하여라

 

코드 풀이

function solution(my_string) {
    const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    const counts = new Array(52).fill(0);
    for (const char of my_string) {
        const index = alphabet.indexOf(char);
        if (index !== -1) {
          counts[index]++;
        }
    }
    
    return counts;
}

해결방안

  • alphabet : 알파벳 대소문자를 나타내는 문자열
  • counts :알파벳 A-z 개수에 맞게 0으로 초기화된 배열 생성 (52개)
  • for ..of : 문자열 my_string을 순회하며 각 문자의 등장 횟수를 센다
  • indexOf : 배열에 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환
  • if(index !== 1) : 알파벳에 포함되는 문자인 경우에만 등장 횟수 해당 counts index를 증가시킨다
 

Array.prototype.indexOf() - JavaScript | MDN

indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환합니다.

developer.mozilla.org

다른 풀이

function solution(my_string) {
    let alp = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    var answer = new Array(52).fill(0);
    for (let i = 0; i < my_string.length; i++) {
        answer[alp.indexOf(my_string[i])]++;
    }
    return answer;
}

해결 방안

  • for문을 사용하여 my_string을 순회하며 각 문자의 등장횟수를 세는 작업 수행
  • answer[alp.indexOf(my)string[i])]++; 는 alp에서 my_stirng i번째 문자에 대응하는 인덱스를 찾아 answer 배열의 해당 인덱스 값을 증가시킨다