이번 문제의 요구 사항은 매우 간단합니다. 숫자(Number) 배열을 인수로 받는 JavaScript 함수를 작성해야 합니다.
배열의 맨 앞에 0(선행 0)이 존재한다면, 함수는 해당 0들을 제자리(in-place)에서 제거해야 합니다. 만약 배열 앞에 0이 없다면 함수는 아무 작업도 수행하지 않습니다.
여기서 주목할 점은 배열 중간이나 끝에 있는 0은 그대로 유지해야 하며, 오직 맨 앞에 연속된 0만 제거한다는 것입니다.
문제 예시
예를 들어, 입력 배열이 다음과 같다면 −
const arr = [0, 0, 0, 14, 0, 63, 0];
함수 실행 후의 결과는 다음과 같아야 합니다 −
const output = [14, 0, 63, 0];
구현 코드
이 기능을 구현한 코드는 다음과 같습니다 −
const arr = [0, 0, 0, 14, 0, 63, 0];
const removeLeadingZero = arr => {
while (arr.indexOf(0) === 0) {
arr.shift();
};
};
removeLeadingZero(arr);
console.log(arr);코드 설명
동작 원리는 다음과 같습니다.
• arr.indexOf(0) === 0 : 배열에서 값 0이 가장 처음 등장하는 위치가 인덱스 0, 즉 배열의 맨 앞인지 확인합니다.
• arr.shift() : 조건이 참이면 배열의 첫 번째 요소를 제거하고 나머지 요소들을 앞으로 당깁니다.
• while 반복문 : 맨 앞 요소가 더 이상 0이 아닐 때까지 위 과정을 반복하여 연속된 선행 0을 모두 제거합니다.
이 방식은 원본 배열 자체를 직접 수정하므로, 추가적인 새 배열을 생성하지 않고도 요구 사항을 충족합니다.
실행 결과
콘솔에 출력되는 결과는 다음과 같습니다 −
[ 14, 0, 63, 0 ]