Developer/Programmers

[Programmers] LV 0. 배열 회전시키기 (Python/파이썬)

moolife 2023. 3. 11.

▶ 문제 설명

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


▶ 제한 사항

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

▶ 입출력 예

numbers direction result
[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합니다.

▶ Code

from collections import deque
def solution(numbers, direction):
    answer = []
    q = deque(numbers)
    if direction ==  'right':
        q.rotate(1)
    else:
        q.rotate(-1)
    for i in q:
        answer.append(i)

    return answer

▶ Point

어떻게 회전을 시킬까 인덱스로만 생각을 하다가 알게된 rotate함수

 

>deque.rotate() 를 사용해서 리스트 회전하기

리스트 자료형을 deque자료형으로 바꾼후 rotate()함수를 이용하면 된다.

함수안에 음수를 넣게 된다면 왼쪽회전 양수는 오른쪽회전이다.

>>> from collections import deque
>>> test = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test = deque(test)
>>> test.rotate(2) 
>>> result = list(test)
>>> result
[8, 9, 1, 2, 3, 4, 5, 6, 7]

양수 2를 넣으면 오른쪽으로 회전한것을 볼 수 있다.

댓글