문제
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
<풀이>
def solution(numbers, direction):
return [numbers[-1]] + numbers[:-1] if direction == 'right' else numbers[1:] + [numbers[0]]
1) 시작, 끝 지점 사용하기
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(my_list[3:])
print(my_list[:5])
print(my_list[2:6])
[4, 5, 6, 7, 8]
[1, 2, 3, 4, 5]
[3, 4, 5, 6]
my_list[3:]은 리스트의 인덱스 3의 위치에서 끝까지 슬라이싱합니다.
앞에서 3개의 성분을 제외하는 것과 같습니다.
my_list[:5]은 리스트의 처음부터 인덱스 5의 위치까지 슬라이싱합니다.
앞에서 5개의 성분을 선택하는 것과 같습니다.
my_list[2:6]은 리스트의 인덱스 2의 위치에서 인덱스 6의 위치까지 슬라이싱합니다.
앞에서 6개를 선택하고 2개를 제외하는 것과 같습니다.
2) 음의 인덱스 사용하기
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(my_list[:-2])
print(my_list[-4:])
print(my_list[-5:-2])
[1, 2, 3, 4, 5, 6]
[5, 6, 7, 8]
[4, 5, 6]
my_list[:-2]은 리스트의 처음부터 인덱스 -2의 위치까지 슬라이싱합니다.
뒤에서 2개의 성분을 제외하는 것과 같습니다.
my_list[-4:]은 리스트의 인덱스 -4의 위치에서 끝까지 슬라이싱합니다.
뒤에서 4개의 성분을 선택하는 것과 같습니다.
my_list[-5:-2]은 리스트의 인덱스 -5의 위치에서 인덱스 -2의 위치까지 슬라이싱합니다.
뒤에서 5개를 선택하고 2개를 제외하는 것과 같습니다.
3) 리스트 복사하기
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(my_list[:])
[1, 2, 3, 4, 5, 6, 7, 8]
my_list[:]은 리스트의 처음부터 끝까지 슬라이싱합니다.
리스트 전체를 복사하는 것과 같으며, 얕은 복사 (Shallow copy)에 해당합니다.
4) 간격 (step) 사용하기
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(my_list[::2])
print(my_list[::3])
[1, 3, 5, 7]
[1, 4, 7]
my_list[::2]은 리스트의 처음부터 끝까지 간격 2 단위로 슬라이싱합니다.
my_list[::3]은 리스트의 처음부터 끝까지 간격 3 단위로 슬라이싱합니다.
5) 시작 (start)/끝 (stop)/간격 (step) 사용하기
예제
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(my_list[1::2])
print(my_list[1::3])
print(my_list[2:6:2])
[2, 4, 6, 8]
[2, 5, 8]
[3, 5]
my_list[1::2]은 리스트의 인덱스 1의 위치에서 끝까지 간격 2 단위로 슬라이싱합니다.
my_list[1::3]은 리스트의 인덱스 1의 위치에서 끝까지 간격 3 단위로 슬라이싱합니다.
my_list[2:6:2]은 리스트의 인덱스 2의 위치에서 인덱스 6의 위치까지 간격 2 단위로 슬라이싱합니다.
6) 음의 간격 (step) 사용하기
my_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(my_list[::-1])
print(my_list[::-2])
print(my_list[::-3])
[8, 7, 6, 5, 4, 3, 2, 1]
[8, 6, 4, 2]
[8, 5, 2]
my_list[::-1]은 리스트의 처음부터 끝까지 간격 -1 단위로 슬라이싱합니다.
뒤집어진 리스트 전체를 복사하는 것과 같습니다.
마찬가지로 my_list[::-2]은 리스트의 처음부터 끝까지 간격 -2 단위로 슬라이싱합니다.
my_list[::-3]은 리스트의 처음부터 끝까지 간격 -3 단위로 슬라이싱합니다.
'CodingTest > [프로그래머스 LV.0]' 카테고리의 다른 글
프로그래머스 LV.0 - 가장 큰 수 찾기[Python] (0) | 2023.01.22 |
---|---|
프로그래머스 LV.0 - 주사위의 개수[Python] (0) | 2023.01.22 |
프로그래머스 LV.0 - 직각삼각형 출력하기[Python] (1) | 2023.01.22 |
프로그래머스 LV.0 - 암호 해독[Python] (0) | 2023.01.22 |
프로그래머스 LV.0 - 대문자와 소문자[Python] (0) | 2023.01.22 |