function solution(num_list, n) {
var answer = [];
for (let i = 0; i < (num_list.length - n); i++) { // "n번째 이후의 원소" 이기에, 전체에서 n을 뺌.
num_list.unshift(num_list.pop()) // 이후 n번째 이후 배열 요소들을 차례대로 맨 뒤 => 맨 앞 으로 보냄.
answer = num_list; // 결과값을 answer변수에 담아 출력.
}
return answer;
}
문제에서 n번째 이후 원소
를 n번째까지의 원소 앞
에 붙인 배열을 새로 나열해야하기 때문에,
배열 맨 끝의 요소를 추출하는 .pop()
메소드와 배열의 첫 인덱스에 요소를 추가해주는 .unshift()
메소드를 활용하여 접근하였다.
하지만 19번 test에서 걸리게 된다...
그 이유인 즉슨, (num_list.length - n)
의 값이 0 되는 반례가 발생하기 때문인데, 위의 값이 0이 되면 배열은 처음 상태와 동일하게 유지된다고 볼 수 있다.
따라서 아래와 같이 조건문을 추가하여 반례로 인한 오류가 발생하지 않도록 해주었다.
const solution = (num_list, n) => {
var answer = [];
if((num_list.length - n) === 0){ // 만약 배열길이 - n 이 0이라면 원본과 똑같기 때문에
return num_list; // 입력받은 그대로를 출력.
}
for (let i = 0; i < (num_list.length - n); i++) { // "n번째 이후의 원소" 이기에, 전체에서 n을 뺌.
num_list.unshift(num_list.pop()) // 이후 n번째 이후 배열 요소들을 차례대로 맨 뒤 => 맨 앞 으로 보냄.
answer = num_list; // 결과값을 answer변수에 담아 출력.
}
return answer;
}