공부/알고리즘
[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