너무 간단한 코드여서 한 문제만 올릴 수 없었다.
다른사람 풀이에서 자바스크립트 코드도 겸사겸사 보고 있는데,
num_list.push(...num_list.splice(0, n));
이건 대체 무슨 코드냐고..
a배열.push(...b배열)
a배열 끝에 b배열의 값을 하나씩 넣어줌
... 없이 바로 배열을 넣으면 오류남.
배열.splice(시작인덱스, 범위, 추가)
원본 배열을 건드림.
특정 범위를 삭제하거나, 새로 추가하거나, 기존 값을 대체할 수 있음.
splice(시작) : 인덱스부터 전체 삭제
splice(시작, 범위) : 인덱스부터 범위까지 삭제
splice(시작, 0, 추가) : 인덱스 자리에 값 추가 -- splice(10, 0, a, b)
splice(시작, 범위, 추가) : 인덱스부터 범위까지 삭제하고 값을 추가 splice(10, 2, a, b) 일종의 값 대체.
num_list = [2, 1, 6]
n = 1
일 때,
num_list.splice(0, 1) --> num_list[0] 을 잘라냄. 즉, 반환값은 [2] 가 됨.
splice 는 원본 배열에 변경사항을 바로 반영하니까
num_list = [1, 6] 만 남아있음.
거기에 반환값 [2] 를 push 를 통해 끝에 붙임.
최종적으로 [1, 6, 2] 가 됨.
# 61) ===================================================================
def from_n(num_list, n):
return num_list[n-1:]
'''
JS
return num_list.slice(n - 1);
'''
print(from_n([2, 1, 6], 3)) # [6]
print(from_n([5, 2, 1, 7, 5], 2)) # [2, 1, 7, 5]
# 62) ===================================================================
def change_order(num_list, n):
return num_list[n:] + num_list[:n]
'''
JS
# removing n elements starting from index 0
# The removed elements are returned as an array
num_list.push(...num_list.splice(0, n));
return num_list
'''
print(change_order([2, 1, 6], 1)) # [1, 6, 2]
print(change_order([5, 2, 1, 7, 5], 3)) # [7, 5, 5, 2, 1]
https://www.daleseo.com/js-array-slice-splice/