7023 : 리스트 회전
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 2
•통과: 1
•만든사람: suakii
문제 설명
$N$개의 원소로 구성된 리스트를 지정한 칸수 $K$만큼 왼쪽(L) 또는 오른쪽(R)으로 회전하는 프로그램을 작성하십시오.
예를 들어, 리스트가
- 왼쪽으로 $2$칸 회전(
- 오른쪽으로 $2$칸 회전(
[제약 조건]
• 리스트 크기 $N$: $1 \le N \le 10{,}000$
• 회전 칸수 $K$: $0 \le K \le N$
• 회전 방향 $D$: 'L' 또는 'R'
예를 들어, 리스트가
[1, 2, 3, 4, 5] 일 때:- 왼쪽으로 $2$칸 회전(
2 L): 앞쪽 2개 원소가 뒤로 이동하여 [3, 4, 5, 1, 2]가 됩니다.- 오른쪽으로 $2$칸 회전(
2 R): 뒤쪽 2개 원소가 앞으로 이동하여 [4, 5, 1, 2, 3]이 됩니다.[제약 조건]
• 리스트 크기 $N$: $1 \le N \le 10{,}000$
• 회전 칸수 $K$: $0 \le K \le N$
• 회전 방향 $D$: 'L' 또는 'R'
입력 설명
첫째 줄에 리스트의 크기 $N$ ($1 \le N \le 10000$), 회전할 칸수 $K$ ($0 \le K \le N$), 회전 방향 $D$ (문자
둘째 줄에 $N$개의 정수가 공백으로 구분되어 주어집니다.
L 또는 R)가 공백으로 구분되어 주어집니다.둘째 줄에 $N$개의 정수가 공백으로 구분되어 주어집니다.
출력 설명
회전이 완료된 리스트의 원소들을 첫 번째 원소부터 공백으로 구분하여 한 줄에 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
5 2 L
1 2 3 4 5
출력 예시
COPY
복사되었습니다!
복사되었습니다!
3 4 5 1 2
도움
Python의 경우 슬라이싱 기법을 이용하면 편리합니다. 왼쪽 회전은
arr[k:] + arr[:k], 오른쪽 회전은 arr[n-k:] + arr[:n-k]로 쉽게 합칠 수 있습니다. 또는 collections.deque의 rotate() 메서드를 활용할 수도 있습니다. (오른쪽 회전은 양수 $K$, 왼쪽 회전은 음수 $-K$)