[프로그래머스 Lv.0] 배열 회전시키기 _파이썬
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
from collections import deque
def solution(numbers, direction):
numbers = deque(numbers)
if direction == 'right':
numbers.rotate(1)
elif direction == 'left':
numbers.rotate(-1)
return list(numbers)
문제를 보자마자 큐가 생각이 났고 뭔가 관련 라이브러리가 있을 것 같아 찾아보았다.
deque(double-ended queue)
출입구가 양쪽에 있는 큐 객체이며, 스택처럼 쓸 수도 있고 큐처럼 쓸 수도 있다.
스택처럼 쓰려면 append(), pop()
큐처럼 쓰려면 append(), pop(), appendleft(), popleft()를 사용하면 된다.
이 외에도 문제 풀이에 사용한 rotate()를 포함하여 extend(), insert(), remove(), reverse() 등의 메소드를 사용할 수 있다.
deque를 사용하면 deque형으로 바뀌기 때문에 마지막에 list로 변환해준다.
https://docs.python.org/ko/3/library/collections.html?highlight=deque#deque-objects
collections — Container datatypes
Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple.,,...
docs.python.org
다른 사람의 풀이
def solution(numbers, direction):
return [numbers[-1]] + numbers[:-1] if direction == 'right' else numbers[1:] + [numbers[0]]
이 코드가 더 간단하지만 지금은 공부하는 단계이니 새로운 라이브러리를 알아가는 것에 더 중점을 두려고 한다!