[JS] 배열 회전시키기 programmers

0

코딩테스트

목록 보기
55/80
post-thumbnail

🎀 문제

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

function solution(numbers, direction) {
    var answer = [];
    return answer;
}

🎀 내 답변

function solution(numbers, direction) {
    var answer = [];
    if(direction === "right"){
        answer.push(numbers[numbers.length-1])
        for(i=0; i < numbers.length-1; i++){
            answer.push(numbers[i])
        }
    }else {
        for(i=1; i < numbers.length; i++){
            answer.push(numbers[i])
        }
        answer.push(numbers[0])
    }
    return answer;
}

solution([1, 2, 3], "right");
  1. if문으로 direction 을 나눠준다.
  2. "right"일 경우 우선 배열 맨 끝 숫자를 뽑아서 담는다. 그리고 0부터 맨끝 바로 이전까지의 숫자를 answer에 담아 반환한다.
  3. "left"일 경우 우선 1번째 부터 맨 끝 숫자를 answer에 담아주고, 맨 처음 숫자를 마지막으로 담아준 뒤 반환한다.

🎀 더 나은 답변

function solution(numbers, direction) {
    if(direction === 'right') {
        numbers.unshift(numbers.pop())
    } else {
        numbers.push(numbers.shift())
    }
    return numbers
}
  1. if문으로 "right"와 "left"를 나눠준다.
  2. "right"일때는 pop을 활용해 배열 마지막 요소만을 꺼내(꺼낸 뒤 배열에서는 사라짐) 반환한다. 그리고 unshift를 통해 배열 맨 앞쪽에 넣어준다.
  3. "left"일때는 shift를 활용해 배열 첫 요소를 꺼내(꺼낸 뒤 배열에서는 사라짐) 반환한 뒤, push로 배열 맨 끝에 넣어준다.
profile
일단 해. 그리고 잘 되면 잘 된 거, 잘 못되면 그냥 해본 거!

0개의 댓글