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

Jiumn·2023년 1월 22일
0

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

문제 설명

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

3 ≤ numbers의 길이 ≤ 20
direction은 "left" 와 "right" 둘 중 하나입니다.

입출력 예

numbersdirectionresult
[1, 2, 3]"right"[3, 1, 2]
[4, 455, 6, 4, -1, 45, 6]"left"[455, 6, 4, -1, 45, 6, 4]

입출력 예 설명

입출력 예 #1
numbers 가 [1, 2, 3]이고 direction이 "right" 이므로 오른쪽으로 한 칸씩 회전시킨 [3, 1, 2]를 return합니다.

입출력 예 #2
numbers 가 [4, 455, 6, 4, -1, 45, 6]이고 direction이 "left" 이므로 왼쪽으로 한 칸씩 회전시킨 [455, 6, 4, -1, 45, 6, 4]를 return합니다.

풀이

배열의 요소를 하나씩 이동시키는 쉬운 방법은 deque 모듈을 사용하는 것이다.
(deque큐(queue)와는 다른 자료구조로 '덱'이라고 읽는다.)
deque를 사용하면 시계 방향 또는 시계 반대 방향으로 요소를 원하는 만큼 이동시킬 수 있다.

from collections import deque 로 모듈을 임포트한다.

먼저 deque() 안에 이동시키려는 배열(number)을 넣어 새로운 배열을 만든다.
그런 다음 조건에 따라 if문으로 분기를 하는데,

directionright면 시계 방향으로 한칸씩 이동시킨다.
이때 deque로 만든 새로운 배열.rotate(1)과 같이 작성하면 된다.

directionleft면 시계 반대방향으로 이동시켜야 하므로
새로운 배열.rotate(-1)과 같이 작성한다.

마지막으로 값을 list에 담아 반환한다.

def solution(numbers, direction):
    from collections import deque
    num_deque = deque(numbers)
    if direction == "right":
        num_deque.rotate(1)
    elif direction == "left":
        num_deque.rotate(-1)
    return list(num_deque)
profile
Back-End Wep Developer. 꾸준함이 능력이다.

0개의 댓글