-
[python] Codility Lesson 2-1. CyclicRotation공부/알고리즘 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'공부 > 알고리즘' 카테고리의 다른 글
[python] Codility Lesson 3-1. FrogJmp (0) 2021.07.24 [python] Codility Lesson 2-2. OddOccurrencesInArray (0) 2021.07.23 [python] Codility Lesson 1-1. BinaryGap (0) 2021.07.22 회문(回文, palindrome) 알고리즘 구현 by Python (0) 2021.03.08 재귀 알고리즘 구현 by Python (0) 2021.03.03