본문 바로가기
코딩테스트

프로그래머스 Javascript 코딩 테스트 Lv.0 배열 회전시키기

by 곰인간 2023. 7. 19.

배열 회전시키기

 

문제를 보면,

정수가 담긴 배열 numbers와 문자열 direction이 매개변수로 주어진다.

numbers 배열을 direction 방향으로 한 칸씩 회전시킨 배열을 반환해야한다.

방향은 "right", "left"이고,

numbers 배열이 [1, 2, 3] 이고, direction이 right이면

numbers 배열의 제일 우측에 있는 3이 우측으로 회전해서 [3, 1, 2]가 되어야한다.

function solution(numbers, direction) {
   const A = []
   let B = []
   for (let i = 0; i < numbers.length; i++) {
      if (direction === 'right') {
          A.push(numbers.splice(-1))
           B.push(numbers.splice(i))
      } else {
          A.push(numbers.splice(1))
            B.push(numbers.splice(i))
      }
   }
    return A.concat(B).flat()
}

더 나은 방법도 있겠지만 나는 원초적인 남자..

원초적으로 풀었다.

먼저 numbers에서 방향에 따라 splice로 잘라내어 반환 될 빈 배열을 A로 선언하고,

나머지 numbers 배열을 담을 빈 배열을 B로 선언했다.

그리고 for문을 사용해서 

방향이 right 일 때, splice메서드를 이용해서 배열의 제일 끝 부분의 인덱스를 제거하고,

제거한 인덱스를 빈 배열 A에 push해준다.
( splice(-1)을 하면 배열의 제일 끝 부분을 제거한다. )

그리고 남은 인덱스들을 빈 배열 B에 push를 한다.

만약 direction이 right가 아니라면

numbers배열에서 splice메서드를 이용해서 인덱스 1부터 끝까지 제거하고,

제거한 인덱스들을 A라고 선언한 빈 배열에 push한다.
( splice(n)을 하면 배열의 인덱스n부터 끝까지 제거한다. )

남은 인덱스는 B에 push한다.

결과값으로 concat메서드를 이용해서 A배열과 B배열을 합쳐서 반환한다.

 

 

댓글