[프로그래머스] 배열 회전시키기
카테고리 : 컴퓨터 공학
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 배열 회전시키기 · js 배열 회전시키기
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 배열 회전시키기 · js 배열 회전시키기
문제 설명
정수가 담긴 배열 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) {
switch (direction) {
case "right":
numbers.unshift(numbers.pop());
return numbers;
break;
case "left":
numbers.push(numbers.shift());
return numbers;
}
}
나의 두번째 풀이(Code Refactoring)
function solution(numbers, direction) {
return direction === "right"
? [numbers[numbers.length - 1], ...numbers.slice(0, numbers.length - 1)]
: [...numbers.slice(1), numbers[0]];
}
// 배열 요소의 0번째 인덱스와 마지막 인덱스만 사용하여 문제 해결
// direction이 right면 마지막 요소의 인덱스부터 전체요소를 얕은 복사로 반환시킨다
// 그렇지 않으면 인덱스의 첫번째 요소를 numbers에 얕은 복사로 반환
참고 할 만한 다른 사람의 코드
function solution(numbers, direction) {
const result = [];
if (direction == "right") {
result[0] = numbers[numbers.length - 1];
for (let i = 0; i < numbers.length - 1; i++) {
result.push(numbers[i]);
}
} else {
lastNumber = numbers[0];
for (let i = 0; i < numbers.length - 1; i++) {
result.push(numbers[i + 1]);
}
result.push(lastNumber);
}
return result;
}
// 반복 연산으로 바꾸는 방법