새소식

Computer Science/코딩테스트 문제 풀이

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

  • -

문제 보러 가기 

 

프로그래머스

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

programmers.co.kr

 

문제 설명 

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

 

제한사항 

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

 

문제 설명 

[1,2,3] 이 주어지고 "right"가 주어지면 [3,1,2]이다.

[1,2,3]이 주어지고 "left"가 주어지면 [2,3,1]이다. 

 

 


방법 1

 

from collections import deque 

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

 

 

방법 2

 

def solution(numbers, direction):
    answer = 0
    k=1
    if direction == "right":
        answer = numbers[-k:] + numbers[:len(numbers)-k]
    else:
        answer = numbers[k:] + numbers[:k]
    
    return answer

if __name__ == '__main__':
    numbers = [1,2,3,4,5]
    direction = 'left'
    print(solution(numbers, direction))

 

방법 3

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

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.