@@ -615,6 +615,45 @@ Counter('hello world').most_common(2) # [('l', 3), ('o', 2)]
615615
616616` most_common() ` 을 사용하면 전체 결과를 튜플의 리스트로 리턴하고, 숫자를 명시하면 상위 n개에 해당하는 결과만 출력합니다.
617617
618+ ### 배열 회전하기
619+
620+ 코테에서 다양한 구현 문제를 풀다보면, 생각보다 귀찮은 친구가 여러가지 있습니다. 그 중 가장 귀찮을 수 있는 것은 바로 ** 배열 회전하기** 죠?
621+
622+ 예를 들어, 다음과 같은 배열이 있다면,
623+ ||||
624+ | ---| ---| ---|
625+ | 1| 2| 3|
626+ | 4| 5| 6|
627+ | 7| 8| 9|
628+
629+ 다음과 같이 회전하는거죠.
630+
631+ ||||
632+ | ---| ---| ---|
633+ | 7| 4| 1|
634+ | 8| 5| 2|
635+ | 9| 6| 3|
636+
637+ 일반적으로 이런 문제를 해결하기 위해선, 이중 for문을 사용합니다.
638+ 하지만 놀랍게도 파이썬은 한 줄로 끝낼 수 있어요!
639+
640+ ``` python
641+ def rotate (arr ):
642+ return list (zip (* arr[::- 1 ]))
643+
644+ print (rotate([[1 , 2 , 3 ], [4 , 5 , 6 ], [7 , 8 , 9 ]]))
645+ # [(7, 4, 1), (8, 5, 2), (9, 6, 3)]
646+ ```
647+
648+ 아니 이게 어떻게 되는거죠? 차근 차근 알아보도록 해요.
649+
650+ - 먼저, ` arr[::-1] ` 이므로 배열을 뒤집습니다. 이렇게 되면 ` [[7, 8, 9], [4, 5, 6], [1, 2, 3]] ` 이 됩니다.
651+ - 이어서, * 을 사용했으니 배열이 언패킹이 됩니다. 즉, ` [7, 8, 9] ` , ` [4, 5, 6] ` , ` [1, 2, 3] ` 으로 분리됩니다.
652+ - 위의 세 배열에 대해 ` zip() ` 을 수행합니다. 각각의 배열을 묶어주므로, ` (7, 4, 1) ` , ` (8, 5, 2) ` , ` (9, 6, 3) ` 이 됩니다.
653+ - ` zip() ` 의 반환값은 zip 객체이므로, 리스트로 변환해줍니다.
654+
655+ 과정은 복잡하지만, 코드는 정말 짧죠?
656+
618657* * *
619658
620659Reference
0 commit comments