ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Programmers - 배열 회전시키기 (Javascript)
    개발/코딩 테스트 2022. 12. 14. 17:07

    정수 배열 numbers의 원소를 문자열 direction 방향으로 한 칸씩 회전시킨 배열을 반환하는 문제

    numbers 가 [1, 2, 3]이고 direction이 "right" 이면 오른쪽으로 한 칸씩 회전시킨 [3, 1, 2]를,

    numbers 가 [4, 455, 6, 4, -1, 45, 6]이고 direction이 "left" 이므로 왼쪽으로 한 칸씩 회전시킨 [455, 6, 4, -1, 45, 6, 4]를 반환하면 된다.

     

    [나의 풀이]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function solution(numbers, direction) {
        let answer = [];
     
        const directions = {
            right: 1,
            left: -1,
        };
     
        numbers.forEach((number, index) => {
            let newIndex = index + directions[direction];
     
            if ( newIndex < 0 ) {
                newIndex = numbers.length - 1;
            } else if ( newIndex > numbers.length - 1 ) {
                newIndex = 0;
            }
     
            answer[newIndex] = number;
        });
     
        return answer;
    }
    cs

     

    [다른 사람의 풀이]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function solution(numbers, direction) {
        var answer = [];
     
        if ("right" == direction) {
            numbers.unshift(numbers.pop());
        } else {
            numbers.push(numbers.shift());
        }
     
        answer = numbers;
     
        return answer;
    }
    cs
    1
    2
    3
    4
    5
    function solution(numbers, direction) {
      return direction === "right"
        ? [numbers[numbers.length - 1], ...numbers.slice(0, numbers.length - 1)]
        : [...numbers.slice(1), numbers[0]];
    }
    cs

     

    Array 내장함수를 잘 조합하면 훨씬 더 간결하게 풀 수 있는 문제

    • pop(): 배열의 마지막 요소를 제거. 함수 반환값은 제거된 마지막 요소
    • shift(): 배열의 첫번째 요소를 제거. 함수 반환값은 제거된 첫번째 요소
    • unshift(): 새로운 요소를 배열의 맨 앞 쪽에 추가. 함수 반환값은 새로운 배열의 길이
    • slice(): 주어진 인덱스 범위에 해당하는 배열의 얕은 복사값을 반환. 원본 배열은 변경되지 않음.
    • splice(): 주어진 인덱스 위치에 요소를 추가하거나 제거. 원본 배열을 변경. 함수 반환값은 제거된 요소 배열

    댓글

Designed by Tistory.