code/[프로그래머스] python
[코딩 테스트 연습 입문] 배열 회전시키기
오리는짹짹
2022. 12. 25. 20:32
문제
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
❗제한사항❗
- 3 ≤ numbers의 길이 ≤ 20
- direction은 "left" 와 "right" 둘 중 하나입니다.
입출력 예
입출력 예 설명
입출력 예 #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합니다.
✔풀이
def solution(numbers, direction):
answer = []
if direction == "left":
num=numbers[0]
numbers.remove(num)
numbers.append(num)
answer=numbers
else:
num=numbers.pop()
numbers.insert(0,num)
answer=numbers
return answer
📝설명
우선, direction에 따른 두 가지 경우를 if문으로 만들어야겠다고 판단했다.
direction이 left인 경우, 맨 앞의 숫자가 제일 뒤로 가야 한다.
따라서, num이란 변수에 numbers[0]를 저장하고, remove()를 통해 리스트 numbers에서 삭제시킨다.
이후, append()를 통해 마지막에 아까 저장한 num을 추가한다.
이렇게 재구성된 numbers를 answer로 넣어주면 direction이 left인 경우는 해결!
다음으로 direction이 right인 경우에는 마지막 숫자가 제일 처음으로 와야 한다는 점을 주목했다.
그렇기 때문에, .pop()을 이용해서 마지막 숫자를 num으로 뺀 후, .insert()를 이용해서 맨 앞으로 재배열하였다.
👑모범 답안
🔎.pop()의 괄호안에 빼내고자 하는 index를 적으면 빼진다..!!
👀느낀 점
: pop()의 기능에 대해 다시 생각해보게 되었다.
모범답안엔 정말 다양한 풀이가 있다.
다른 사람들의 풀이를 보면서 전부는 당장 어렵겠지만, 조금씩 이해해나가야겠다.