리그캣의 개발놀이터

[코딩도장] 리스트 회전 python으로 풀어보기 본문

알고리즘

[코딩도장] 리스트 회전 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 가 나 다 라 마 바 사 ['라', '마', '바', '사', '가', '나', '다']


Comments