준호씨의 블로그

Codility - CyclicRotation 본문

개발이야기/PS - Problem Solving, 알고리즘

Codility - CyclicRotation

준호씨 2021. 3. 19. 21:16
반응형

 

 

Codility

Your browser is not supported You should use a supported browser. Read more

app.codility.com

배열 A를 K만큼 오른쪽 shift 하는 문제입니다. 단 범위를 넘어서는 숫자는 왼쪽 끝으로 이동합니다. 무한히 순환되는 구조입니다.

A = [3, 8, 9, 7, 6]
K = 6

이면 배열 [3, 8, 9, 7, 6]를 6만큼 오른쪽으로 shift 합니다. 결과는 [6, 3, 8, 9, 7]입니다. 5만큼 shift 하면 한 바퀴 돌고 1만큼 한 번 더 shift 한 것입니다.

1만큼 shfit 하면 결국 뒤의 1개와 앞의 4개 (길이-1)를 합친 것과 같습니다. 만약 빈 배열이면 자신을 리턴합니다. 그리고 shift개수가 배열의 길이를 초과한 경우 나머지를 구해서 나머지만큼만 shift 하면 됩니다.

def solution(A, K):
    if len(A) == 0:
        return A

    K = K % len(A)
    return A[-K:] + A[0:-K]

 

 

반응형
Comments