문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

7023 : 리스트 회전

•시간제한: 1.000 S •메모리제한: 256 MB •제출: 2 •통과: 1 •만든사람: suakii

7023 : 리스트 회전

시간 1.000s · 메모리 256MB · 제출 2 · 정답 1

문제 설명

$N$개의 원소로 구성된 리스트를 지정한 칸수 $K$만큼 왼쪽(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$ (문자 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$)

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘