Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열에서 알파벳 순서대로 n개의 문자 제거하기

문제 설명

소문자 알파벳으로 구성된 문자열과 숫자 num을 입력받아, 알파벳 순서대로 num개의 문자를 제거하는 JavaScript 함수를 작성해야 합니다.

여기서 "알파벳 순서대로"란, 먼저 문자열에서 'a'를 모두 찾아 제거한 뒤, 그다음 'b', 'c' 등을 차례로 제거하여 지정된 개수에 도달할 때까지 반복한다는 의미입니다.

동작 예시

예를 들어 문자열이 'abascus'이고 num이 4라면 다음과 같은 순서로 진행됩니다.

  • 'a' 제거 → 'bascus' (남은 제거 횟수: 3)
  • 'a' 제거 → 'bscus' (남은 제거 횟수: 2)
  • 'b' 제거 → 'scus' (남은 제거 횟수: 1)
  • 'c' 제거 → 'sus' (남은 제거 횟수: 0)

따라서 최종 결과는 'sus'가 됩니다.

코드 구현

const str = 'abascus';
const num = 4;
const removeAlphabetically = (str = '', num = '') => {
   const legend = "abcdefghijklmnopqrstuvwxyz";
   for(let i = 0; i < legend.length; i+=1){
      while(str.includes(legend[i]) && num > 0){
         str = str.replace(legend[i], "");
         num -= 1;
    };
  };
  return str;
};
console.log(removeAlphabetically(str, num));

코드 설명

  • legend: 알파벳 소문자 전체('a'~'z')를 담고 있는 기준 문자열입니다.
  • 바깥쪽 for 루프는 'a'부터 'z'까지 알파벳을 하나씩 순회합니다.
  • 안쪽 while 루프는 현재 알파벳이 문자열에 존재하고, 아직 제거해야 할 개수(num)가 남아 있는 동안 해당 문자를 계속해서 제거합니다.
  • String.prototype.replace()는 가장 먼저 일치하는 문자 하나만 교체하므로, while 루프와 함께 사용하면 동일한 문자가 여러 개 있을 때도 모두 처리할 수 있습니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

sus