[프로그래머스 / Python] 배열 회전시키기

Kun-Woo Kim·2024년 12월 27일

알고리즘 공부

목록 보기
1/24
post-thumbnail

문제 출처

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를 사용하는 방법은 코드가 약간 더 길어지지만, 작업 의도가 명확하게 드러납니다. 반면, 리스트 슬라이싱을 사용하는 방법은 코드가 매우 간결해지지만, 처음 보는 사람이 이해하기에는 조금 더 복잡할 수 있습니다.

프로그래밍을 배우기 시작했을 때, 다양한 문제에 대해 여러 해결 방법을 배우고 비교해보는 것은 매우 중요합니다. 각 방법의 장단점을 이해하고, 상황에 맞게 적절한 도구를 선택할 수 있는 능력을 기르는 것이 중요합니다. 앞으로도 많은 연습을 통해 다양한 프로그래밍 기술을 익히고, 나만의 문제 해결 능력을 키워 나가길 바랍니다.

profile
안녕하세요, 김건우입니다! 웹과 앱 개발에 열정적인 전문가로, Next.js 14, Node.js, Express, Flutter 등을 활용한 프로젝트를 다룹니다. 제 블로그에서는 개발 여정, 기술 분석, 실용적 코딩 팁을 공유합니다. 창의적인 솔루션을 실제로 적용하는 과정의 통찰도 나눌 예정이니, 궁금한 점이나 상담은 언제든 환영합니다.

0개의 댓글