
https://school.programmers.co.kr/learn/courses/30/lessons/120844
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
이 문제에서는 배열의 요소들을 오른쪽 또는 왼쪽으로 한 칸씩 옮기는 작업을 해야 했습니다. 가장 먼저 collections.deque 함수가 떠올랐습니다. deque는 양 끝에서 데이터를 추가하거나 제거할 수 있는 자료구조로, 배열을 회전시키는 작업에 매우 유용합니다.
from collections import deque
def solution(numbers, direction):
# deque 자료구조를 사용하여 numbers 초기화
deq = deque(numbers)
if direction == "right" :
# 오른쪽으로 회전시키기 위해 맨 뒤의 요소를 맨 앞으로 이동
deq.appendleft(deq.pop())
else :
# 왼쪽으로 회전시키기 위해 맨 앞의 요소를 맨 뒤로 이동
deq.append(deq.popleft())
return list(deq)
def solution(numbers, direction):
return [numbers[-1]] + numbers[:-1] if direction == 'right' else numbers[1:] + [numbers[0]]
이 문제를 통해 deque를 활용하는 방법과 리스트의 슬라이싱 기능을 사용하는 두 가지 다른 접근 방식을 배울 수 있었습니다. deque를 사용하는 방법은 코드가 약간 더 길어지지만, 작업 의도가 명확하게 드러납니다. 반면, 리스트 슬라이싱을 사용하는 방법은 코드가 매우 간결해지지만, 처음 보는 사람이 이해하기에는 조금 더 복잡할 수 있습니다.
프로그래밍을 배우기 시작했을 때, 다양한 문제에 대해 여러 해결 방법을 배우고 비교해보는 것은 매우 중요합니다. 각 방법의 장단점을 이해하고, 상황에 맞게 적절한 도구를 선택할 수 있는 능력을 기르는 것이 중요합니다. 앞으로도 많은 연습을 통해 다양한 프로그래밍 기술을 익히고, 나만의 문제 해결 능력을 키워 나가길 바랍니다.