공부/알고리즘

[python] Codility Lesson 2-1. CyclicRotation

richpark 2021. 7. 23. 03:01

 

 

def solution(A, K):
    # write your code in Python 3.6
    if len(A) == 0:
        return []
    else:
        shift_num = K % len(A)
        temp = [0 for _ in range(len(A))]
        for i in range(len(A)):
            if i + shift_num >= len(A):
                temp[i + shift_num - len(A)] = A[i]
            else:            
                temp[i + shift_num] = A[i]
    
    return temp

 

어려운점 없는 무난한 연습문제 였다.

 

꾸준히 단계별로 구상후 코드로 나타내는 연습을 계속 해보자.

 

1. shift_num은 K 에다가 리스트 A의 사이즈를 나눈 나머지로 하면 되겠구나.

 

2. temp 리스트를 A리스트 사이즈로 생성해주고, 사이즈가 넘어가는 shift에 대해서는 - len(A)를 해주면 되겠구나.

 

3. 예외 상황 empty_list를 고려해주자.

 

4. 나머지 특별한 예외사항? 시간 단축을 위해서 모두 같은 수는 그냥 그 리스트를 리턴하면 되겠구나 ...etc (별 시간복잡도를 줄여 줄거 같진않네..)

 

728x90