8000 add additional contents · jaehoonkimm/Algorithm_Study@585d051 · GitHub
[go: up one dir, main page]

Skip to content

Commit 585d051

Browse files
committed
add additional contents
1 parent 48c0ecc commit 585d051

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Concept/New/00_Special/Pythonic_Code_For_Coding_Test.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

620659
Reference

0 commit comments

Comments
 (0)
0