본문 바로가기
알고리즘/Programmers

[TIL] 2023.06.06 Programmers_순서 바꾸기

by heereal 2023. 6. 6.

순서 바꾸기

문제 설명

정수 리스트 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 메서드를 이용한다.

 

댓글