🧑💻 언어 및 제출 결과
- 사용 언어:
JavaScript
- 통과 여부: ✅
🧠 풀이 설명
Splice
+ Unshift
+ Comma
Operator
nums.splice(nums.length - (k % nums.length))
로 뒤에서 k개 요소를 잘라냄
nums.unshift(...잘라낸배열)
로 잘라낸 요소들을 맨 앞에 삽입
- Comma Operator를 사용해
unshift
실행 후 수정된 nums
반환
- 나머지 연산
k % nums.length
로 k
가 배열 길이보다 큰 경우 처리
📊 시간/공간 복잡도
- 시간 복잡도:
splice O(n)
+ unShift O(n)
= O(n)
- 총합:
O(n)
- 공간 복잡도: O(1) - in-place 수정 (잘라낸 임시 배열 제외)
📝 추가 설명 (선택)
splice
하는 부분에서 단순하게 nums.length
- k
를 unshift
하였는데, 이렇게 되면 nums.length
가 k
보다 작을경우 음수 인덱스가 발생하여 실패 케이스가 생겨남
// 문제 상황: nums.length < k
// 예시: nums = [1, 2], k = 5
// 실패 케이스
nums.splice(nums.length - k) // splice(2 - 5) = splice(-3)
// JavaScript splice 음수 인덱스 동작:
// splice(-3)에서 -3 < -nums.length(-2)이므로
// 실제로는 splice(0)과 동일하게 동작
// 즉, 전체 배열 [1,2]를 잘라내고 빈 배열 []가 남음
// unshift(1,2) → 결과: [1,2] (변화 없음)
// 성공 케이스
nums.splice(nums.length - (k % nums.length)) // splice(2 - (5%2)) = splice(1)
// splice(1) → [2]를 잘라냄, nums = [1]
// unshift(2) → 결과: [2,1]