[Python] LeetCode 189. Rotate Array

송진영·2023년 8월 25일
0

LeetCode

목록 보기
5/8

문제 풀이

리스트가 원으로 연결되어 있다고 생각하고, 시계 방향으로 회전시키는 문제이다.

from collections import deque
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        nums = deque(nums)
        for i in range(k):
            nums.rotate(1)
        nums = list(nums)

파이썬은 위와 같이 rotate 함수를 자체적으로 지원해줘서 이 함수를 가져다 쓰면 손쉽게 구현할 수 있지만 LeetCode는 리스트를 새로 선언하는 것을 다른 리스트로 판단하고, 인정해주지 않는다. 그래서 직접 구현해야 한다.

  1. for문으로 리스트를 탐색한다.

  2. 리스트의 마지막 원소를 제거해준다.

  3. 제거해준 리스트의 마지막 원소를 리스트의 첫 번째 위치에 삽입한다.

  4. 이 과정을 k번 반복한다.

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        for i in range(k): ## 1. for문으로 리스트를 탐색한다.
        
        ## 2. 리스트의 마지막 원소를 제거해준다.
        ## 3. 제거해준 리스트의 마지막 원소를 리스트의 첫 번째 위치에 삽입한다.
            nums.insert(0,nums.pop()) 
profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글