Skip to content

Commit

Permalink
add additional contents
Browse files Browse the repository at this point in the history
  • Loading branch information
VSFe committed Feb 1, 2022
1 parent 48c0ecc commit 585d051
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions Concept/New/00_Special/Pythonic_Code_For_Coding_Test.md
Original file line number Diff line number Diff line change
Expand Up @@ -615,6 +615,45 @@ Counter('hello world').most_common(2) # [('l', 3), ('o', 2)]

`most_common()`을 사용하면 전체 결과를 튜플의 리스트로 리턴하고, 숫자를 명시하면 상위 n개에 해당하는 결과만 출력합니다.

### 배열 회전하기

코테에서 다양한 구현 문제를 풀다보면, 생각보다 귀찮은 친구가 여러가지 있습니다. 그 중 가장 귀찮을 수 있는 것은 바로 **배열 회전하기**죠?

예를 들어, 다음과 같은 배열이 있다면,
||||
|---|---|---|
|1|2|3|
|4|5|6|
|7|8|9|

다음과 같이 회전하는거죠.

||||
|---|---|---|
|7|4|1|
|8|5|2|
|9|6|3|

일반적으로 이런 문제를 해결하기 위해선, 이중 for문을 사용합니다.
하지만 놀랍게도 파이썬은 한 줄로 끝낼 수 있어요!

```python
def rotate(arr):
return list(zip(*arr[::-1]))

print(rotate([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
# [(7, 4, 1), (8, 5, 2), (9, 6, 3)]
```

아니 이게 어떻게 되는거죠? 차근 차근 알아보도록 해요.

- 먼저, `arr[::-1]` 이므로 배열을 뒤집습니다. 이렇게 되면 `[[7, 8, 9], [4, 5, 6], [1, 2, 3]]` 이 됩니다.
- 이어서, *을 사용했으니 배열이 언패킹이 됩니다. 즉, `[7, 8, 9]`, `[4, 5, 6]`, `[1, 2, 3]` 으로 분리됩니다.
- 위의 세 배열에 대해 `zip()`을 수행합니다. 각각의 배열을 묶어주므로, `(7, 4, 1)`, `(8, 5, 2)`, `(9, 6, 3)` 이 됩니다.
- `zip()`의 반환값은 zip 객체이므로, 리스트로 변환해줍니다.

과정은 복잡하지만, 코드는 정말 짧죠?

* * *

Reference
Expand Down

0 comments on commit 585d051

Please sign in to comment.