nums[-3:]
에 있는 숫자와 nums[:k]
를 switch한다.이 방식은 배열의 k <= len(nums)// 2
일 때는 답이 되지만, 이 경우가 아닐 때는 계속 swtich를 해야 하기 때문에 매우 비효율적이다.
class Solution:
def switch(self, nums: List[int], left: int, right: int) -> List[int]:
while left < right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
return nums
def rotate(self, nums: List[int], k: int) -> None:
k = k % len(nums) # 배열 내에서의 인덱스
# reverse
left, right = 0, len(nums)-1
nums = self.switch(nums, left, right)
# left (노란색)
left, right = 0, k-1
nums = self.switch(nums, left, right)
# right (초록색)
left, right = k, len(nums)-1
nums = self.switch(nums, left, right)
모르면 보고 익히자! 익숙해지면 다 할 수 있어 💪