반응형
배열의 회전
- 배열의 회전은 Rotation을 떠올리면 이해가 편하다. '한번의 회전'은 '한번의 Rotation'으로, [1,2,3,4,5]가 [2,3,4,5,1]이 된다.
- 배열과 회전 횟수를 파라미터로 활용해 배열을 회전하는 알고리즘을 짜보자.
풀이
def rotateArray(nums, k):
partialReverse(nums, 0, len(nums) - 1)
partialReverse(nums, 0, k - 1)
partialReverse(nums, k, len(nums) - 1)
return nums
# 다음 함수는 추가적인 공간 사용 없이 배열의 일부를 뒤집어 주는 함수입니다.
def partialReverse(nums, start, end):
for i in range(0, int((end-start)/2) + 1):
temp = nums[start + i]
nums[start+i] = nums[end - i]
nums[end -i] = temp
- 배열의 일부를 뒤집어주는 함수를 따로 만들어 활용했다.
- 이를 활용해 전체를 뒤집고, Rotation 횟수를 기준으로 앞 뒤를 뒤집어주는 방식을 활용했다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 이진트리 깊이별로 나누기 (0) | 2020.07.24 |
---|---|
[알고리즘 연습] 제한된 공간의 스트리밍 데이터 평균값 구하기 (0) | 2020.07.23 |
[알고리즘 연습] 0 이동시키기 (0) | 2020.07.18 |
[알고리즘 연습] 주어진 숫자를 1로 만들기 위한 최소 횟수 구하기 (0) | 2020.07.17 |
[알고리즘 연습] 배열에서 타겟과 일치하는 수 2개 찾기 (0) | 2020.07.17 |