순서 바꾸기
문제 설명
정수 리스트 num_list와 정수 n이 주어질 때, num_list를 n 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요.
입출력 예
num_list | n | result |
[2, 1, 6] | 1 | [1, 6, 2] |
[5, 2, 1, 7, 5] | 3 | [7, 5, 5, 2, 1] |
입출력 예 #1
- [2, 1, 6]에서 첫 번째 이후의 원소는 [1, 6]이고 첫 번째까지의 원소는 [2]입니다. 두 리스트를 이어 붙이면 [1, 6, 2]가 됩니다.
입출력 예 #2
- [5, 2, 1, 7, 5]에서 세 번째 이후의 원소는 [7, 5]이고 세 번째까지의 원소는 [5, 2, 1]입니다. 두 리스트를 이어 붙이면 [7, 5, 5, 2, 1]가 됩니다.
나의 풀이
function solution(num_list, n) {
return [...num_list.slice(n), ...num_list.slice(0, n)];
}
slice 메서드와 스프레드 연산자를 이용해서 풀었다.
다른 사람의 풀이 01
function solution(num_list, n) {
return num_list.slice(n).concat(num_list.slice(0,n));
}
배열을 합칠 수 있는 concat 메서드를 이용한 풀이! concat도 언젠가 사용해보고 싶은 메서드 중에 하나다.
const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);
console.log(array3);
// Expected output: Array ["a", "b", "c", "d", "e", "f"]
- concat() 메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새로운 배열을 반환합니다.
- 기존배열을 변경하지 않습니다.
다른 사람의 풀이 02
function solution(num_list, n) {
num_list.push(...num_list.splice(0, n));
return num_list
}
놀랍게도 배열에 push 할 때 요소를 여러 개 넘길 수 있다는 걸 이 풀이를 통해서 처음 알았다 🫠 splice 메서드가 원본 배열을 변경한다는 속성을 이용해서 num_list의 앞 부분을 삭제한 후, 삭제한 요소들을 push 메서드로 다시 num_list 끝에 추가해준다.
var sports = ['축구', '야구'];
var total = sports.push('미식축구', '수영');
console.log(sports); // ['축구', '야구', '미식축구', '수영']
console.log(total); // 4
- push 메서드를 이용하여 두가지 엘리먼트를 포함하는 스포츠 배열을 생성하고 두개의 엘리먼트를 추가 한다. total 변수는 추가한 배열의 새 길이 값을 포함한다.
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);
// removed is ["mandarin"]
// myFish is ["angel", "clown", "drum", "sturgeon"]
- splice 메서드를 이용하여 인덱스에서 한 개 요소 제거하기
다른 사람의 풀이 03
function solution(num_list, n) {
num_list.unshift(...num_list.splice(n));
return num_list;
}
풀이 2번과 동일한 접근인데 배열의 앞 부분을 삭제한 후에 새로운 요소를 배열의 맨 앞에 추가해주는 unshift 메서드를 이용한다.
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.06.13 Programmers_수열과 구간 쿼리 1 (0) | 2023.06.13 |
---|---|
[TIL] 2023.06.10 Programmers_왼쪽 오른쪽 (3) | 2023.06.10 |
[TIL] 2023.06.04 Programmers_수 조작하기 2 (1) | 2023.06.04 |
[TIL] 2023.06.03 Programmers_배열 조각하기 (0) | 2023.06.03 |
[TIL] 2023.06.02 Programmers_배열 만들기 3 (0) | 2023.06.02 |
댓글