level0_배열 회전시키기
2024. 12. 10. 21:15ㆍ파이썬_알고리즘(코딩테스트)/level0

내가 제출한 코드
def solution(numbers, direction):
answer = []
if direction == "right":
answer.append(numbers[-1])
answer.extend(numbers[:-1])
else:
answer.extend(numbers[1:])
answer.append(numbers[0])
return answer
- answer.extend(numbers[:-1]) # 나머지 요소들을 추가
- answer.extend(numbers[1:]) # 첫 번째 요소를 제외한 나머지를 추가
나는 extend랑 append가 헷갈려서 정리차 적어보았다.
numbers = [1, 2, 3, 4]
answer = []
# extend 사용
answer.extend(numbers[1:])
print(answer)
# 출력: [2, 3, 4] # 각 요소가 추가됨
# append 사용
answer.append(numbers[1:])
print(answer)
# 출력: [[2, 3, 4]] # 리스트 자체가 추가됨
다른 사람이 제출한 코드1
def solution(numbers, direction):
return [numbers[-1]] + numbers[:-1] if direction == 'right' else numbers[1:] + [numbers[0]]
두 줄로..도 가능하구낭...
그리고 리스트끼리의 덧셈 ... 까먹고 있었다..
여기서 주의사항은 리스트 덧셈은 새로운 리스트를 생성하기 때문에, 덧셈 연산이 많아지면 성능에 영향을 줄 수 있다고 한다.
다른 사람이 제출한 코드2
from collections import deque
def solution(numbers, direction):
numbers = deque(numbers)
if direction == 'right':
numbers.rotate(1)
else:
numbers.rotate(-1)
return list(numbers)
- collections 모듈의 deque(덱)를 사용하여 리스트를 지정된 방향으로 간편하게 회전시키는 함수이다.
- numbers = deque(numbers)
- 여기서는 numbers 리스트를 덱으로 변환한다.
- 덱은 회전(rotate) 기능을 제공하므로, 리스트 회전 작업을 간단히 수행할 수 있다.
- numbers.rotate()
- 덱을 n칸 회전한다.
- n > 0: 오른쪽으로 n칸 이동
- n < 0: 왼쪽으로 n칸 이동.
우와 사람들 진짜... 똑똑하다. deque, rotate... 노트에 다시 기록해둬야겠다.
'파이썬_알고리즘(코딩테스트) > level0' 카테고리의 다른 글
| level0_문자열 바꿔서 찾기 (0) | 2024.12.10 |
|---|---|
| level0_주사위 게임1 (0) | 2024.12.04 |
| level0_부분 문자열 이어 붙여 문자열 만들기 (0) | 2024.12.03 |
| level0_배열의 원소 삭제하기 (1) | 2024.11.28 |
| level0_꼬리 문자열 (0) | 2024.11.28 |