티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/120844

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

매개변수로 배열과 회전 방향이 주어지면, 회전 방향에 따라 배열의 요소를 재배치시키는 문제

 

<Test case 1>

numbers = [1, 2, 3] / direction = "right" 이면 오른쪽으로 한 칸씩 회전시키기

result = [3, 1, 2]

 

<Test case 2>

numbers = [4, 455, 6, 4, -1, 45, 6] / direction = "left"이면 왼쪽으로 한 칸씩 회전시키기

result = [455, 6, 4, -1, 45, 6, 4]

 

Solution.

1. direction이 right이면 배열의 맨 마지막 요소가 맨 첫 번째 요소로 이동

※ Last in First out의 특징을 가진 'Stack' 자료구조를 이용하기

 

Python에서는 Stack 자료구조를 리스트(배열)로 활용

=> 맨 마지막 요소를 꺼내기 : list.pop()

=> 꺼낸 요소를 배열의 첫 번째 인덱스에 삽입하기 : list.insert(0, 꺼낸 요소)

 

2. direction이 left이면 배열의 맨 첫 번째 요소가 맨 마지막 요소로 이동

=> First in First out의 특징을 가진 'Queue' 자료구조를 이용하기

 

Python에서는 Queue 자료구조를 'from collections import deque' 활용

=> 맨 처음에 들어온 요소를 꺼내서 맨 마지막 index에 삽입 : deque.rotate(-1)

 

from collections import deque

def solution(numbers, direction):
    answer = []
    temp = 0
    
    if direction == 'right':  #right일 때는 stack
        temp = numbers.pop()  #맨 마지막으로 들어온 요소을 꺼내서 맨 처음 index에 삽입
        numbers.insert(0, temp)
        answer = numbers
    else:
        numbers = deque(numbers) #left일 때는 deque
        numbers.rotate(-1)  #맨 처음에 들어온 요소를 꺼내서 맨 마지막 index에 삽입
        answer = list(numbers)
    return answer
TAG more
글 보관함
최근에 올라온 글