Skip to content

Commit bf58e57

Browse files
committed
change ipynb file to md
1 parent 271a62a commit bf58e57

File tree

2 files changed

+108
-189
lines changed

2 files changed

+108
-189
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
Pythonic Code For Coding Test
2+
=============================
3+
Python은 다른 C-Sytle의 언어 (C, C++, JAVA, ...) 와 다른 특별한 문법들이 많습니다.
4+
5+
다만 코딩테스트를 위해 Python을 사용하거나, 기본적인 문법만 공부하고 사용하시는 분들은 Python만의 특유의 문법 (Pythonic 한 코드라고도 합니다.)을 잘 활용하지 못하는 경우가 많습니다.
6+
7+
이 자료는 다음과 같은 분들에게 추천합니다.
8+
- 파이썬 문법을 알고 있지만 Pythonic한 코드를 작성하는데 어려움을 겪는 분들
9+
- C-Style 언어를 사용하다 코딩 테스트를 위해 Python을 사용하시는 분들
10+
11+
꼭 모든 내용을 기억할 필요는 없고, 간단하게 30분 정도 시간을 잡고 읽어보시면서 "이런 문법도 있구나!"하고 이해하고 넘어가면 좋을 것 같습니다.
12+
13+
목차 (예정)
14+
-----------
15+
내용이 확정되는 대로 작성하겠습니다.
16+
* * *
17+
## Unpacking
18+
파이썬으로 알고리즘 문제를 좀 풀다보면 이 문법은 친숙할겁니다.
19+
20+
```python
21+
a, b = map(int, input().split())
22+
```
23+
이것은 iterable (모든 반복 가능한 객체를 iterable 하다고 합니다! 리스트, 튜플, 문자열 등등...) 한 데이터엔 모두 가능한 문법입니다.
24+
25+
그런데 이런 상황이 있을 겁니다.
26+
27+
> 입력 받은 list에서 첫번째, 마지막 값만 얻고 싶어!
28+
29+
또는
30+
31+
> 입력 받은 list에서 첫번째, 마지막 값을 제외하고 싶어!
32+
33+
이런 경우는 어떻게 해야 할까요?
34+
```python
35+
_list = [1, 2, 3, 4, 5]
36+
first_index, *rest, last_index = _list
37+
print(rest) # 2 3 4
38+
```
39+
간단하네요?
40+
파이썬은 *(asterisk)를 다음과 같은 상황에 사용합니다.
41+
42+
- 곱셈, 거듭제곱
43+
- List형 컨테이너를 반복해서 확장
44+
- 가변 인자
45+
- Unpacking
46+
47+
위에서 rest에 사용한 것은 가변인자 입니다. 즉, 인자의 갯수가 몇개가 될지 확실하지 않을때 사용하는 거죠.
48+
first_index와 last_index가 앞과 끝을 가져가면, rest가 나머지를 가져가는 겁니다.
49+
50+
그렇다면 Unpacking은 뭘까요?
51+
일단 아래 예시를 보겠습니다.
52+
```python
53+
_list = [1, 2, 3, 4, 5]
54+
for num in _list:
55+
print(num, end = ' ') # 1 2 3 4 5
56+
```
57+
_list내 원소들을 출력하는 평범한 코드입니다. 그렇다면 이건 어떨까요?
58+
```python
59+
_list = [1, 2, 3, 4, 5]
60+
print(*_list) # 1 2 3 4 5
61+
```
62+
놀랍게도 동일한 결과를 얻을 수 있습니다. 이것을 **List Unpacking** 이라고 부릅니다.
63+
64+
사실 list뿐만이 아니라, 컨테이너형 구조에선 모두 적용할 수 있습니다. 튜플에서도 되고, set에서도 가능해요.
65+
66+
Unpacking을 이야기 했으니 살짝 다른 이야기를 해보겠습니다. 이건 어떤가요?
67+
```python
68+
a, b, c = [1, 2, 3]
69+
d = a, b, c
70+
print(d) # (1, 2, 3)
71+
```
72+
오잉? 첫번째 줄은 알겠는데 두번째 줄은 뭔가요?
73+
74+
저런식으로 하나의 변수에 여러 값을 할당하게 되면 튜플로 묶이게 됩니다. 위에서 튜플로 Unpacking을 할 수 있다고 했으니, 이건 Packing이라고 생각하면 되겠네요.
75+
* * *
76+
## List Comprehension
77+
파이썬의 꽃 중에 하나로, 한국어로는 **지능형 리스트** 라고도 합니다.
78+
79+
그래도 List Comprehension은 워낙 유명해서 아시는 분들이 조금 많은 것 같을테니, 조금 헤비하게 들어가보겠습니다.
80+
81+
먼저 기본형을 보면,
82+
```python
83+
_list = [i for i in range(10)] # 0 1 2 3 4 5 6 7 8 9
84+
```
85+
이런 구조를 띄고 있습니다. 사실 이런 구조는 보기 쉬우니까 처음 보는 사람들도 적당히 이해하고 넘어갈 수 있습니다.
86+
87+
그렇다면 이건 어떨까요?
88+
```python
89+
## 백준 온라인 저지 1920번 "수 찾기" (http://boj.kr/1920)
90+
import sys
91+
input = sys.stdin.readline
92+
93+
_ = input()
94+
_set = set(map(int, input().split()))
95+
q = input()
96+
_list = list(map(int, input().split()))
97+
98+
print(*[1 if dt in _set else 0 for dt in _list], sep = '\n')
99+
```
100+
어... 이해가 잘 가시나요? 가신다면 그냥 스크롤을 아래로 쭉~~ 내리시면 됩니다.
101+
102+
우선 List Comprehension은 다음과 같은 구조를 띄고 있습니다.
103+
* * *
104+
Reference
105+
---------
106+
- 파이썬 언어 레퍼런스 [이동](https://docs.python.org/ko/3/reference/index.html)
107+
- 전문가를 위한 파이썬 (원제 Fluent Python) - 루시아누 하말류 [구매](https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=88728476)
108+
- Python Cookbook - 데이비드 비즐리, 브라이언 K. 존스 [구매](https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=35468006)

Concept/00_Special/Pythonic_For_Coding_Test.ipynb

Lines changed: 0 additions & 189 deletions
This file was deleted.

0 commit comments

Comments
 (0)