HelloCho

[Python] #189. Rotate Array(easy) 본문

코테/LeetCode

[Python] #189. Rotate Array(easy)

choo2969 2020. 9. 30. 23:33

문제

이 문제는 list가 주어질때 오른쪽으로 k index만큼 옮기는 문제이다.

처음 시도한 방법.

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        
        for i in range(k):
            data = nums.pop()
            nums.insert(0,data)

처음 시도한 방법은 가장 마지막 값을 pop시켜서 nums에 0번 index에 값을 넣어줬다. 

결과

..많이 느린 것 같다. 원인은 insert로 값을 넣다보니 값을 하나씩 다 미뤄야해서 오래걸리는 것! 

그래서 다음 시도한 방법은 k개씩 옮기면 어느위치에 값이 가는지 이미(?) 알고있으니 값을 옮기는 방법이다.

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        n = len(nums)
        a = [0] * n
        for i in range(n):
            a[(i + k) % n] = nums[i]
            
        nums[:] = a

a의 값을 0으로 [0]배열로 초기화시켜준다.

(i+k) $n으로 값을 해주면 아주 간단하게 ? 문제 해결가능 

그리고 inplace형식으로 문제를 해결해야하기 때문에 nums[:] 식으로 a값을 넣어준다.

확실히 더 빠른속도로 문제 해결가능 ! 

'코테 > LeetCode' 카테고리의 다른 글

[Python] #134. Gas Station(Medium)  (0) 2020.10.01
[Python] #H-Index2(Medium)  (0) 2020.09.30
[Python] #274. H-Index(Medium)  (0) 2020.09.30
[Python] #125. Valid Palindrome(easy)  (0) 2020.09.30
[Python] #204. Count Primes(easy)  (0) 2020.09.30
Comments