[TIL]배열 조작하기

hello__0·2022년 10월 2일
0

TIL

목록 보기
1/8

문제

  • array 요소들 중 10과 같거나 작은 요소들은 result의 맨 앞으로, 10보다 큰 요소들은 result의 맨 뒤로 재구성해 result 배열을 반환해주세요.
  • 재구성이 되는 순서는 array의 맨 뒤 요소부터 맨 앞 요소까지입니다. 즉, 배열의 뒷 요소부터 재구성을 진행해주세요.
function divideArrayInHalf(array) {
  const result = [];
  for (let i = array.length - 1; i >= 0; i--) {
    
    if (array[i] <= 10) {
      result.unshift(array[i]);
      console.log(result);
    } else if (array[i] > 10) {
      result.push(array[i]);
    }
  }
  return result;
}

divideArrayInHalf([1, 20, 10, 5, 100]);

이 문제의 핵심은 뒤에서 부터 재구성을 진행하는 것이다.
그렇기 때문에 for문의 조건이 중요하다.
뒤에서 부터 한개씩 -1을 해야하기 때문에 i-- 을 하고 시작점인 i는 array의 길이에서 -1을 뺀다.
array의 길이에서 -1을 빼는 이유는 배열의 인덱스는 0부터 시작하기 때문에 길이와 index의 개수를 맞추려면 array.length - 1을 해야한다.
그 다음 i가 멈추는 조건은 i가 0과 같거나 커야한다.
처음에 i < array.length 을 조건으로 했다가 length 보다 i는 항상 작기 때문에 무한루프가 걸려버렸다.
그렇기 때문에 배열의 index가 0이 되면 멈춰야 한다. 그래서 0보다 크거나 같다라는 조건을 걸어야한다.

profile
자라나라 나무나무

0개의 댓글