티스토리 뷰

728x90
반응형

문제

https://app.codility.com/programmers/lessons/2-arrays/cyclic_rotation/

주어진 배열을 K의 수만큼 오른쪽으로 shift한 후 변환된 배열을 반환하면 되는 문제이다.

문제 풀이

K가 주어진 배열 보다 클 경우, K 값을 K %= len(A)로 변경하면 K가 크더라도 주어진 배열 크기 만큼 shift한다.

코드

from collections import deque


def solution(A, K):
    length = len(A)

    if not length or length == K:
        return A

    if K > length:
        K %= length

    lst = deque(A)
    lst.rotate(K)

    return list(lst)
  • deque를 활용하면, rotate를 통해 shift를 쉽게 처리할 수 있다.
  • 직접 구현하는 것에 비해 rotate는 경우에 따라 앞, 뒤로 shift 한다.
728x90
반응형
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글