https://school.programmers.co.kr/learn/courses/30/lessons/120844
def solution(numbers, direction):
answer = [0] * len(numbers)
for i in range(len(numbers)):
if direction == 'right':
answer[(i + 1) % len(numbers)] = numbers[i]
else:
answer[(i - 1) % len(numbers)] = numbers[i]
return answer
right
이면 현재 인덱스의 값을 다음 인덱스의 값에 저장하되, 리스트의 길이 나머지 연산을 통해 순환을 고려했다. from collections import deque
def solution(numbers, direction):
numbers = deque(numbers)
if direction == 'right':
numbers.rotate(1)
else:
numbers.rotate(-1)
return list(numbers)
deque
을 통해 똑똑하게 풀었다.deque
이 어떤 자료구조인지는 알고 있었으나, rotate()
함수가 있는지는 몰랐다.deque
은 양쪽 끝에서 삽입과 삭제가 빠른 자료구조이다.O(1)
연산이 가능하고, 연결 리스트 구조로 메모리 할당이 효율적이다.rotate()
함수는 인자가 양수라면 오른쪽으로, 음수라면 왼쪽으로 이동한다.피드백은 언제나 환영입니다 :)