Coding Test/Programmers

[프로그래머스 Lv.0] 배열 회전시키기 _파이썬

식혜야 2023. 3. 4. 02:13

문제

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]]

이 코드가 더 간단하지만 지금은 공부하는 단계이니 새로운 라이브러리를 알아가는 것에 더 중점을 두려고 한다!