Just Do IT!

[프로그래머스 Level 0] 120844. 배열 회전시키기 (JavaScript) 본문

코딩테스트 준비/프로그래머스

[프로그래머스 Level 0] 120844. 배열 회전시키기 (JavaScript)

MOON달 2023. 1. 5. 09:28
728x90

문제 설명

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 3 ≤ numbers의 길이 ≤ 20
  • direction은 "left" 와 "right" 둘 중 하나입니다.

입출력 예

numbers direction result
[1, 2, 3] "right" [3, 1, 2]
[4, 455, 6, 4, -1, 45, 6] "left" [455, 6, 4, -1, 45, 6, 4]

입출력 예 설명

입출력 예 #1

  • numbers 가 [1, 2, 3]이고 direction이 "right" 이므로 오른쪽으로 한 칸씩 회전시킨 [3, 1, 2]를 return합니다.

입출력 예 #2

  • numbers 가 [4, 455, 6, 4, -1, 45, 6]이고 direction이 "left" 이므로 왼쪽으로 한 칸씩 회전시킨 [455, 6, 4, -1, 45, 6, 4]를 return합니다.

 


 

function solution(numbers, direction) {
    // 오른쪽이면 오른쪽으로 한칸씩 이동 => 마지막 숫자 -> 첫번째로 이동
    // 왼쪽이면 왼쪽으로 한칸씩 이동 => 첫번째 숫자 -> 마지막으로 이동
    // => 조건문 사용해서 왼쪽/오른쪽 구별 후 이동

    if (direction === "right") {
        // 마지막 인덱스의 숫자를 제거한 후 맨 앞에 추가
        // pop : 마지막 요소 제거
        // unshift : 맨 앞에 추가
        numbers.unshift(numbers.pop())
    }
    else {
        // 맨 첫번째 인덱스의 숫자를 제거한 후 맨 뒤에 추가
        // shift : 첫번째 요소 제거
        numbers.push(numbers.shift())
    }

    return numbers
}

 

 

다른 사람 풀이 : 삼항연산자 사용 (훨씬 깔끔하다)

function solution(numbers, direction) {
    direction === 'right' ? numbers.unshift(numbers.pop()) : numbers.push(numbers.shift());
    return numbers;
}