알고리즘
[코딩도장] 리스트 회전 python으로 풀어보기
리그캣
2019. 2. 12. 19:04
아래 조건에 따라 리스트를 회전하는 프로그램을 작성하시오.
조건
입력값은 한 행의 문자열로 주어지며, 각 값은 공백으로 구분된다.
첫 번째 값은 리스트를 회전하는 양과 방향(음수의 경우 좌측으로, 양수의 경우 우측으로 회전)이다.
첫 번째 값을 제외한 나머지 값은 리스트의 각 항목의 값이다.
회전된 리스트를 문자열로 출력한다.
구현에 이용할 자료구조에 대한 조건이나 제약은 없다.
입력되는 리스트의 항목의 개수는 유한한다.
입출력예
예 1)
입력:
1 10 20 30 40 50
출력:
50 10 20 30 40
예 2)
입력:
4 가 나 다 라 마 바 사
출력:
라 마 바 사 가 나 다
예 3)
입력:
-2 A B C D E F G
출력:
C D E F G A B
예 4)
입력:
0 똘기 떵이 호치 새초미
출력:
똘기 떵이 호치 새초미
위의 입력과 출력을 보면 첫번째 입력, 즉 [0]의 값이 배열의 이동을 결정한다.
0이라면 배열이 그대로 유지되는 것이고
1이라면 우측으로 당겨진다. 이때 맨 끝자리는 배열의 [0]의 자리로 오게된다.
이말은 즉 4라는 입력을 받게되면 원래 배열이 [가,나,다,라,마,바,사] 라면 맨 끝에서 4만큼인 라,마,바,사는
맨앞으로 오계된다는 말이다.
그러면 결국 맨끝에서 끝 4개와 원래잇던 앞의 배열만큼을 뒤에 붙여주면
[라,마,바,사(맨끝 4개) + 가, 나, 다(맨 끝 4개를 제외한 배열)] 이렇게 구현해 주면 되는 문제이다.
개발한 코드는 다음과 같다..
input_list = input().split()rotation_num = int(input_list[0])origin_list = input_list[1:] #맨 처음을 제외한 나머지transfer_list = origin_list[-rotation_num:]+origin_list[:-rotation_num]print(transfer_list)4 가 나 다 라 마 바 사 ['라', '마', '바', '사', '가', '나', '다']