[TIL]배열 조작하기

hello__0·2022년 10월 2일
0

TIL

목록 보기
1/11

문제

  • 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개의 댓글

관련 채용 정보