프로그래머스 | 배열 회전시키기 [파이썬 python]

2023. 3. 5. 20:05·Algorithm/프로그래머스
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(numbers, direction):
    answer = [0] * len(numbers)
    
    for i in range(len(numbers)):
        if direction == 'right':
            answer[(i+1) % len(numbers)] = numbers[i]
        else:
            answer[(i-1) % len(numbers)] = numbers[i]
    return answer

 

주어진 배열 numbers를 direction이 right이면 오른쪽으로 1칸, left이면 왼쪽으로 1칸씩 이동시키는 문제이다.

right인 경우에는 기존 인덱스에서 + 1을 해주고 % len(numbers)을 하면 오른쪽으로 한 칸씩 이동했을 때의 인덱스를 구할 수 있다.

left인 경우에는 기존 인덱스에서 - 1을 해주고 % len(numbers)을 하면 한 칸씩 왼쪽으로 이동했을 때의 인덱스를 구할 수 있다.

* 이때 인덱스가 -1이면 배열의 마지막을 의미한다.

 

다른 코드 - deque 이용

from collections import deque

def solution(numbers, direction):    
    numbers = deque(numbers)
    
    if direction == 'right':
        numbers.rotate(1)
    else:
        numbers.rotate(-1)
    
    return list(numbers)

사실 이 문제는 데큐를 이용해서 푸는 것이 제일 적합하다고 생각한다. 

원형으로 배열이 있다고 생각하면 왼쪽 오른쪽으로 이동하는 것이 선형 배열보다 쉽다.

deque를 import 해주고 rotate 메소드를 이용하여 1(=오른쪽 한 칸), -1(=왼쪽 한 칸)을 해주면 쉽게 원하는 결과를 얻을 수 있다.

 

처음부터 데큐를 생각하지 못한 점이 아쉽게 느껴진다.

반응형
저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 팩토리얼 [파이썬 python]
  • 프로그래머스 | 합성수 찾기 [파이썬 python]
  • 프로그래머스 | 공 던지기 [파이썬 python]
  • 프로그래머스 | 2차원으로 만들기 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 배열 회전시키기 [파이썬 python]
상단으로

티스토리툴바