문제설명
정수 리스트 num_list와 정수 n이 주어질 때, num_list를 n 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요.
입출력 예
- 2 ≤ num_list의 길이 ≤ 30
- 1 ≤ num_list의 원소 ≤ 9
- 1 ≤ n ≤ num_list의 길이
소스코드&결과
소스 코드
function solution(num_list, n) {
let answer = num_list.slice(n, num_list.length);
let s = num_list.slice(0, n);
for(let i of s)
answer.push(i);
return answer;
}
결과
코드 설명
let answer = num_list.slice(n, num_list.length);
- answer 배열을 초기화하며, 이 배열은 결과를 저장할 배열입니다.
- 초기 값은 slice()를 사용하여 num_list 배열의 n 인덱스부터 끝까지의 요소들로 설정하였습니다. 이것은 num_list 배열의 n 인덱스 이후의 요소들을 answer 배열로 복사한다는 의미입니다.
let s = num_list.slice(0, n);
- s 배열을 초기화합니다. 이 배열은 slice()를 이용하여 num_list 배열의 처음부터 n 인덱스 직전까지의 요소들로 설정하였습니다. 이것은 num_list 배열의 처음부터 n-1 인덱스까지의 요소들을 s 배열로 복사한다는 의미입니다.
for(let i of s)
- for...of 반복문을 사용하여 s 배열의 각 요소를 순회합니다.
answer.push(i);
- 루프 안에서 answer 배열에 현재 순회 중인 s 배열의 요소 i를 push()를 사용하여 추가합니다.
이로써 answer 배열에 s 배열의 요소들이 순서대로 추가됩니다.
return answer;
- 마지막으로, 변경된 answer 배열을 반환합니다.
다른 사람이 짠 코드
function solution(num_list, n) {
num_list.push(...num_list.splice(0, n));
return num_list
- splice()를 사용하여 num_list 배열의 앞에서부터 n 개의 요소를 잘라내고, 이를 반환한 후 원래 배열에서 해당 요소들을 제거합니다.
- push()와 전개 연산자(...)를 사용하여 앞서 잘라낸 요소들을 num_list 배열의 끝에 추가합니다.
function solution(num_list, n) {
return num_list.slice(n).concat(num_list.slice(0,n));
}
- slice()를 사용하여 num_list 배열에서 인덱스 n부터 끝까지의 요소들을 추출합니다.
- concat()를 사용하여 앞서 추출한 요소들과 num_list 배열에서 처음부터 인덱스 n 직전까지의 요소들을 연결합니다.
위의 코드를 보시면서 slice()함수와 splice() 함수 등 헷갈리는 메소드가 많을 것이라 생각이 드는데요..!
저도 헷갈릴 때가 종종 많아서 여기에 나온 함수들의 기능에 대해 정리해보겠습니다!!
함수 설명
slice() 함수
- slice() 함수는 배열의 특정 부분을 추출하여 새로운 배열을 반환합니다.
- 인덱스 범위를 지정하여 원하는 부분을 추출할 수 있습니다.
- 원본 배열은 변경되지 않고, 추출한 부분을 포함한 새로운 배열이 반환됩니다.
splice() 함수
- splice() 함수는 배열에서 요소를 추가하거나 삭제하거나 교체할 때 사용됩니다.
- 첫 번째 인자로 시작 인덱스, 두 번째 인자로 삭제할 요소의 개수를 받습니다.
- 세 번째 인자부터는 삭제된 위치에 삽입할 요소들을 전달할 수 있습니다.
- 원본 배열이 수정됩니다.
concat() 함수
- concat() 함수는 배열을 합치는 역할을 합니다.
- 현재 배열과 다른 배열(또는 값)을 전달하여 새로운 배열을 생성합니다.
- 원본 배열은 변경되지 않고, 합쳐진 새로운 배열이 반환됩니다.
push() 함수
- push() 함수는 배열의 끝에 하나 이상의 요소를 추가합니다.
- 전달된 요소들이 배열의 끝에 순서대로 추가됩니다.
- 변경된 배열의 길이가 반환됩니다.
- 원본 배열이 수정됩니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JavaScript] 배열 만들기 3 (0) | 2023.08.15 |
---|---|
[JavaScript] 배열의 원소 삭제하기 (2) | 2023.08.14 |
[JAVA] JadenCase 문자열 만들기 (6) | 2023.08.04 |
[JAVA] 로또의 최고 순위와 최저 순위 (2) | 2023.08.02 |
[JavaScript] 0 떼기 (2) | 2023.08.01 |