์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Factory Method Pattern
- ์ด๋ ธํ ์ด์
- ํ๋ IT&E
- Android Studio
- Dialog
- http method
- URN
- swagger
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- ์ฑ์ฉํ์ ํ
- ๊ธฐ์ด100์
- reflection
- OpenAPI
- menutab
- fontstyle
- ์ฝ๋์
- udp
- tcp
- uri
- AndroidStudio
- 2024-08-21
- 2024-08-20
- url
- OOP
- di
- Kotlin
- datepicker
- IOC
- Python
- FACTORY
dingdong coding
[ Python ] ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฌธ๋ฒ๊ณผ ์ฃผ์์ ๋ณธ๋ฌธ
[ Python ] ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฌธ๋ฒ๊ณผ ์ฃผ์์
๐ถ ๊ฐ๋ฐ๊ฐ๋ฐ ๐พ 2022. 2. 4. 19:30ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋,
ํน์ ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์์ฃผ ์ฌ์ฉ๋๋ ํ์ค ์์ค์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌํํด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธ
1) ๋ด์ฅ ํจ์ : print( ), input( )๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์
์ถ๋ ฅ ๊ธฐ๋ฅ๋ถํฐ sorted( )์ ๊ฐ์ ์ ๋ ฌ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์๋ ๊ธฐ๋ณธ ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ์์ด์๋ ์๋๋ ํ์์ ์ธ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์๋ค.
2) itertools : ํ์ด์ฌ์์ ๋ฐ๋ณต๋๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์์ด๊ณผ ์กฐํฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
3) heapq : ํ(heap) ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ฐ์ ์์ ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
4) bisect : ์ด์งํ์(Binary Search) ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
5) collections : ๋ฑ(deque), ์นด์ดํฐ(Counter) ๋ฑ์ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํฌํจํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
6) math : ํ์์ ์ธ ์ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ํํ ๋ฆฌ์ผ, ์ ๊ณฑ๊ทผ, ์ต๋๊ณต์ฝ์(GCD), ์ผ๊ฐํจ์ ๊ด๋ จ ํจ์๋ถํฐ ํ์ด(pi)์ ๊ฐ์ ์์๋ฅผ ํฌํจํ๊ณ ์๋ค.
๋ด์ฅ ํจ์ : ๋ณ๋์ import ๋ช ๋ น์ด ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๋ด์ฅํจ์
sum( ) : ๋ฆฌ์คํธ์ ๊ฐ์ iterable ๊ฐ์ฒด๊ฐ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์์์ ํฉ์ ๋ฐํํ๋ค.
result = sum([1, 2, 3, 4, 5])
print(result) # 15
* iterable ๊ฐ์ฒด : ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด ๋ฆฌ์คํธ, ์ฌ์ ์๋ฃํ, ํํ ์๋ฃํ ๋ฑ
min( ) : ํ๋ผ๋ฏธํฐ๊ฐ 2๊ฐ ์ด์ ๋ค์ด์์ ๋ ๊ฐ์ฅ ์์ ๊ฐ์ ๋ฐํ
result = min(7, 3, 5, 2)
print(result) # 2
max( ) : ํ๋ผ๋ฏธํฐ๊ฐ 2๊ฐ ์ด์ ๋ค์ด์์ ๋ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํ
result = max(7, 3, 5, 2)
print(result) # 7
eval( ) : ์ํ ์์์ด ๋ฌธ์์ด ํ์์ผ๋ก ๋ค์ด์ค๋ฉด ํด๋น ์์์ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
result = eval("(3+5)*7")
print(result) # 56
sorted( ) : iterable ๊ฐ์ฒด๊ฐ ๋ค์ด์์ ๋, ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ. key ์์ฑ์ผ๋ก ์ ๋ ฌ ๊ธฐ์ค์ ๋ช ์ํ ์ ์์ผ๋ฉฐ, reverse ์์ฑ์ผ๋ก ์ ๋ ฌ๋ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ๋ฅผ ๋ค์ง์์ง์ ์ฌ๋ถ๋ฅผ ์ค์ ํ ์ ์๋ค.
result = sorted([9, 1, 8, 5, 4]) # ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
print(result) # [1, 4, 5, 8, 9]
result = sorted([9, 1, 8, 5, 4], reverse=True) # ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
print(result) # [9, 8, 5, 4, 1]
ํ์ด์ฌ์์๋ ๋ฆฌ์คํธ์ ์์๋ก ๋ฆฌ์คํธ๋ ํํ์ด ์กด์ฌํ ๋ ํน์ ํ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌ ์ํ ๊ฐ๋ฅ
์ ๋ ฌ ๊ธฐ์ค : key ์์ฑ
ex) ๋ฆฌ์คํธ [('ํ๊ธธ๋', 35), ('์ด์์ ', 75), ('์๋ฌด๊ฐ', 50)] : ์์๋ฅผ ํํ์ ๋ ๋ฒ์งธ ์์(์)๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
result = sorted([('ํ๊ธธ๋', 35), ('์ด์์ ', 75), ('์๋ฌด๊ฐ', 50)], key=lambda x: x[1], reverse=True)
print(result) #[('์ด์์ ', 75), ('์๋ฌด๊ฐ', 50), ('ํ๊ธธ๋', 35)]
sort( ) : ๋ฆฌ์คํธ ๊ฐ์ฒด์ ๋ด๋ถ ๊ฐ์ด ์ ๋ ฌ๋ ๊ฐ์ผ๋ก ๋ฐ๋ก ๋ณ๊ฒฝ
data = [9, 1, 8, 5, 3]
data.sort()
print(data) # [1, 3, 5, 8, 9]
itertools : ๋ฐ๋ณต๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ ํฌํจ
permutations, combinations, product, combinations_with_replacement
permutations : ๋ฆฌ์คํธ์ ๊ฐ์ iterable ๊ฐ์ฒด์์ r๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ ์ผ๋ ฌ๋ก ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ(์์ด)๋ฅผ ๊ณ์ฐ class
๊ฐ์ฒด ์ด๊ธฐํ ์ดํ์๋ ๋ฆฌ์คํธ ์๋ฃํ์ผ๋ก ๋ณํํ์ฌ ์ฌ์ฉํ๋ค.
ex) ๋ฆฌ์คํธ ['A', 'B', 'C']์์ 3๊ฐ (r=3)๋ฅผ ๋ฝ์ ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ถ๋ ฅํ๋ ์์
from itertools import permutations
data = ['A', 'B', 'C'] #๋ฐ์ดํฐ ์ค๋น
result = list(permutations(data, 3)) # ๋ชจ๋ ์์ด ๊ตฌํ๊ธฐ
print(result)
# [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
combinations : ๋ฆฌ์คํธ์ ๊ฐ์ iterable๊ฐ์ฒด์์ r๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ ์์๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ(์กฐํฉ)์ ๊ณ์ฐ class
๊ฐ์ฒด ์ด๊ธฐํ ์ดํ์๋ ๋ฆฌ์คํธ ์๋ฃํ์ผ๋ก ๋ณํํ์ฌ ์ฌ์ฉํ๋ค.
ex) ๋ฆฌ์คํธ ['A', 'B', 'C']์์ 2๊ฐ (r=2)๋ฅผ ๋ฝ์ ์์์ ์๊ด์์ด ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ถ๋ ฅํ๋ ์์
from itertools import combinations
data = ['A', 'B', 'C'] #๋ฐ์ดํฐ ์ค๋น
result = list(combinations(data, 2)) # 2๊ฐ๋ฅผ ๋ฝ๋ ๋ชจ๋ ์กฐํฉ ๊ตฌํ๊ธฐ
print(result)
# [('A', 'B'), ('A', 'C'), ('B', 'C')]
product : permutations์ ๊ฐ์ด ๋ฆฌ์คํธ์ ๊ฐ์ iterable๊ฐ์ฒด์์ r๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์
์ผ๋ ฌ๋ก ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ (์์ด)์ ๊ณ์ฐ class ** ์์๋ฅผ ์ค๋ณตํด์ ๋ฝ๋๋ค **
product ๊ฐ์ฒด ์ด๊ธฐํ : ๋ฐ์ดํฐ์ ์๋ฅผ repeat ์์ฑ๊ฐ์ผ๋ก ๋ฃ์ด์ค๋ค.
๊ฐ์ฒด ์ด๊ธฐํ ์ดํ์๋ ๋ฆฌ์คํธ ์๋ฃํ์ผ๋ก ๋ณํํ์ฌ ์ฌ์ฉํ๋ค.
ex) ๋ฆฌ์คํธ ['A', 'B', 'C']์์ ์ค๋ณต์ ํฌํจํ์ฌ 2๊ฐ (r=2)๋ฅผ ๋ฝ์ ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ถ๋ ฅํ๋ ์์
from itertools import product
data = ['A', 'B', 'C'] #๋ฐ์ดํฐ ์ค๋น
result = list(product(data, repeat=2)) # 2๊ฐ๋ฅผ ๋ฝ๋ ๋ชจ๋ ์์ด ๊ตฌํ๊ธฐ (์ค๋ณตํ์ฉ)
print(result)
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
combinations_with_replacement : combinations์ ๊ฐ์ด ๋ฆฌ์คํธ์ ๊ฐ์ iterable๊ฐ์ฒด์์ r๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ ์์๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์ผ๋ ฌ๋ก ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ (์กฐํฉ)์ ๊ณ์ฐ class ** ์์๋ฅผ ์ค๋ณตํด์ ๋ฝ๋๋ค **
๊ฐ์ฒด ์ด๊ธฐํ ์ดํ์๋ ๋ฆฌ์คํธ ์๋ฃํ์ผ๋ก ๋ณํํ์ฌ ์ฌ์ฉํ๋ค.
ex) ๋ฆฌ์คํธ ['A', 'B', 'C']์์ ์ค๋ณต์ ํฌํจํ์ฌ 2๊ฐ (r=2)๋ฅผ ๋ฝ์ ์์์ ์๊ด์์ด ๋์ดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ถ๋ ฅํ๋ ์์
from itertools import combinations_with_replacement
data = ['A', 'B', 'C'] #๋ฐ์ดํฐ ์ค๋น
result = list(combinations_with_replacement(data, 2)) # 2๊ฐ๋ฅผ ๋ฝ๋ ๋ชจ๋ ์กฐํฉ ๊ตฌํ๊ธฐ (์ค๋ณตํ์ฉ)
print(result)
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
heapq : ๋ค์ต์คํธ๋ผ ์ต๋จ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํฌํจํด ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์์ ์ฐ์ ์์ ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ ํ ๋ ์ฌ์ฉ
- ํ์ด์ฌ์ ํ์ ์ต์ ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฏ๋ก ๋จ์ํ ์์๋ฅผ ํ์ ์ ๋ถ ๋ฃ์๋ค๊ฐ ๋นผ๋ ๊ฒ๋ง์ผ๋ก๋ ์๊ฐ ๋ณต์ก๋ O(NlogN)์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด ์๋ฃ๋๋ค.
- ๋ณดํต ์ต์ ํ ์๋ฃ๊ตฌ์กฐ์ ์ต์๋จ ์์๋ฅผ ํญ์ '๊ฐ์ฅ ์์'์์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ ์์๋ฅผ ์ฝ์
ํ ๋ : heapq.heappush( )
ํ์ ์์๋ฅผ ๊บผ๋ผ ๋ : heapq.heappop( )
ex) ํ ์ ๋ ฌ์ heapq๋ก ๊ตฌํํ๋ ์์
import heapq
def heapsort(iterable):
h = []
result = []
# ๋ชจ๋ ์์๋ฅผ ์ฐจ๋ก๋๋ก ํ์ ์ฝ์
for value in iterable:
heapq.heappush(h, value)
# ํ์ ์ฝ์
๋ ๋ชจ๋ ์์๋ฅผ ์ฐจ๋ก๋๋ก ๊บผ๋ด์ด ๋ด๊ธฐ
for i in range(len(h)):
result.append(heapq.heappop(h))
return result
result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
print(result) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ํ์ด์ฌ์์๋ ์ต๋ ํ์ ์ ๊ณต X
heapq ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์ต๋ํ ๊ตฌํ ์, ์์์ ๋ถํธ๋ฅผ ์์๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ ์ฌ์ฉ
** ํ์ ์์๋ฅผ ์ฝ์ ํ๊ธฐ ์ ์ ์ ์ ๋ถํธ๋ฅผ ๋ฐ๋๋ก ๋ฐ๊พธ์๋ค๊ฐ ํ์์ ์์๋ฅผ ๊บผ๋ธ ๋ค์ ๋ค์ ์์์ ๋ถํธ๋ฅผ ๋ฐ๊พธ๋ฉด ๋๋ค. **
ex) ์ต๋ํ์ ๊ตฌํํ์ฌ ๋ด๋ฆผ์ฐจ์ ํ ์ ๋ ฌ์ ๊ตฌํ
import heapq
def heapsort(iterable):
h = []
result = []
# ๋ชจ๋ ์์๋ฅผ ์ฐจ๋ก๋๋ก ํ์ ์ฝ์
for value in iterable:
heapq.heappush(h, -value)
# ํ์ ์ฝ์
๋ ๋ชจ๋ ์์๋ฅผ ์ฐจ๋ก๋๋ก ๊บผ๋ด์ด ๋ด๊ธฐ
for i in range(len(h)):
result.append(-heapq.heappop(h))
return result
result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
print(result) #[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
bisect : ์ด์ง ํ์์ ์ฝ๊ฒ ๊ตฌํ, '์ ๋ ฌ๋ ๋ฐฐ์ด'์์ ํน์ ํ ์์๋ฅผ ์ฐพ์์ผํ ๋ ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉ๋จ
- bisect_left(a, x) : ์ ๋ ฌ๋ ์์๋ฅผ ์ ์งํ๋ ค๋ฉด์ ๋ฆฌ์คํธ a์ ๋ฐ์ดํฐ x๋ฅผ ์ฝ์
ํ ๊ฐ์ฅ ์ผ์ชฝ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋ ๋ฉ์๋
- bisect_right(a, x) : ์ ๋ ฌ๋ ์์๋ฅผ ์ ์งํ๋ ค๋ฉด์ ๋ฆฌ์คํธ a์ ๋ฐ์ดํฐ x๋ฅผ ์ฝ์
ํ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋ ๋ฉ์๋
ex) ์ ๋ ฌ๋ ๋ฆฌ์คํธ [1, 2, 4, 4, 8]์ด ์์ ๋, ์๋กญ๊ฒ ๋ฐ์ดํฐ 4๋ฅผ ์ฝ์
ํ๋ ค ํ๋ค๊ณ ๊ฐ์
bisect_left(a, 4)์ bisect_right(a, 4)๋ ๊ฐ๊ฐ ์ธ๋ฑ์ค ๊ฐ์ผ๋ก 2์ 4์ ๋ฐํ
from bisect import bisect_left, bisect_right
a = [1, 2, 4, 4, 8]
x = 4
print(bisect_left(a,x)) # 2
print(bisect_right(a,x)) # 4
** ์ ๋ ฌ๋ ๋ฆฌ์คํธ ** ์์ ๊ฐ์ด ํน์ ๋ฒ์์ ์ํ๋ ์์์ ๊ฐ์๋ฅผ ๊ตฌํ๊ณ ์ ํ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
from bisect import bisect_left, bisect_right
# ๊ฐ์ด [left_value, right_value]์ธ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ํจ์
def count_by_range(a, left_value, right_value):
right_index = bisect_right(a, right_value)
left_index = bisect_left(a, left_value)
return right_index - left_index
# ๋ฆฌ์คํธ ์ ์ธ
a = [1, 2, 3, 3, 3, 3, 4 ,4 , 8, 9]
# ๊ฐ์ด 4์ธ ๋ฐ์ดํฐ ๊ฐ์ ์ถ๋ ฅ
print(count_by_range(a, 4, 4)) # 2
# ๊ฐ์ด [-1, 3] ๋ฒ์์ ์๋ ๋ฐ์ดํฐ ๊ฐ์ ์ถ๋ ฅ
print(count_by_range(a, -1, 3)) # 6
collections : ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ deque, Counter
- deque : ํ ๊ตฌํ์ฉ๋, ๋ฆฌ์คํธ ์๋ฃํ๊ณผ ๋ค๋ฅด๊ฒ ์ธ๋ฑ์ฑ, ์ฌ๋ผ์ด์ฑ ๊ธฐ๋ฅ ์ฌ์ฉ X. ๋ค๋ง ์ฐ์์ ์ผ๋ก ๋์ด๋ ๋ฐ์ดํฐ์ ์์๋ถ๋ถ์ด๋ ๋ ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ๊ฑฐ๋ ์ญ์ ํ ๋๋ ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ค.
- Counter : ๋ฑ์ฅํ์๋ฅผ ์ธ๋ ๊ธฐ๋ฅ ์ ๊ณต. ๋ฆฌ์คํธ์ ๊ฐ์ iterable ๊ฐ์ฒด๊ฐ ์ฃผ์ด์ก์ ๋, ํด๋น ๊ฐ์ฒด ๋ด๋ถ์ ์์๊ฐ ๋ช ๋ฒ์ฉ ๋ฑ์ฅํ๋์ง ์๋ ค์ค๋ค. ** ์์๋ณ ๋ฑ์ฅ ํ์๋ฅผ ์ธ๋ ๊ธฐ๋ฅ์ด ํ์ํ ๋ ์งง์ ์์ค์ฝ๋๋ก ์ด๋ฅผ ๊ตฌํํ ์ ์๋ค. **
๊ธฐ๋ณธ ๋ฆฌ์คํธ์ ์๋ฃํ
๋ฆฌ์คํธ | deque | |
๊ฐ์ฅ ์์ชฝ์ ์์ ์ถ๊ฐ | O(N) | O(1) |
๊ฐ์ฅ ๋ค์ชฝ์ ์์ ์ถ๊ฐ | O(1) | O(1) |
๊ฐ์ฅ ์์ชฝ์ ์๋ ์์ ์ ๊ฑฐ | O(N) | O(1) |
๊ฐ์ฅ ๋ค์ชฝ์ ์๋ ์์ ์ ๊ฑฐ | O(1) | O(1) |
๋ฆฌ์คํธ ์๋ฃํ์ append()๋ฉ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋, pop() ๋ฉ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ '๊ฐ์ฅ ๋ค์ชฝ ์์'๋ฅผ ๊ธฐ์ค์ผ๋ก ์ํ๋๋ค. ๋ฐ๋ผ์ ์ ์ชฝ์ ์๋ ์์๋ฅผ ์ฒ๋ฆฌํ ๋์๋ ๋ฆฌ์คํธ์ ํฌํจ๋ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋ฐ๋ผ์ ๋ง์ ์๊ฐ์ด ์์๋ ์ ์๋ค. ์๊ฐ ๋ณต์ก๋ O(N)
deque๋ ์คํ์ด๋ ํ์ ๊ธฐ๋ฅ์ ๋ชจ๋ ํฌํจํ๋ค๊ณ ๋ณผ ์ ์์. **์๋ฃ๊ตฌ์กฐ์ ๋์ฉ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ**
์ฒซ ๋ฒ์งธ ์์ ์ ๊ฑฐ : popleft( )
๋ง์ง๋ง ์์ ์ ๊ฑฐ : pop( )
์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์์ x๋ฅผ ์ฝ์
ํ ๋ : appendleft(x)
๋ง์ง๋ง ์ธ๋ฑ์ค์ ์์ x๋ฅผ ์ฝ์
ํ ๋ : append(x)
๋จผ์ ๋ค์ด์จ ์์๊ฐ ํญ์ ๋จผ์ ๋๊ฐ๊ฒ ๋๋ค.
ex) ๋ฆฌ์คํธ [2, 3, 4]์ ๊ฐ์ฅ ์์ชฝ๊ณผ ๋ค์ชฝ์ ์์๋ฅผ ์ฝ์
ํ๋ ์์
from collections import deque
data = deque([2, 3, 4])
data.appendleft(1)
data.append(5)
print(data) # deque([1, 2, 3, 4, 5])
print(list(data)) # ๋ฆฌ์คํธ ์๋ฃํ์ผ๋ก ๋ณํ [1, 2, 3, 4, 5]
Counter
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue']) # 3 'blue'๊ฐ ๋ฑ์ฅํ ํ์ ์ถ๋ ฅ
print(counter['green']) # 1 'green'์ด ๋ฑ์ฅํ ํ์ ์ถ๋ ฅ
print(dict(counter)) # {'red': 2, 'blue': 3, 'green': 1} ์ฌ์ ์๋ฃํ์ผ๋ก ๋ณํ
math : ์์ฃผ ์ฌ์ฉ๋๋ ์ํ์ ์ธ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฉํ ๋ฆฌ์ผ, ์ ๊ณฑ๊ทผ, ์ต๋๊ณต์ฝ์ ๋ฑ
factorial(x) x! ๊ฐ ๋ฐํ
import math
print(math.factorial(5)) # ํฉํ ๋ฆฌ์ผ ์ถ๋ ฅ 120
sqrt(x) x์ ์ ๊ณฑ๊ทผ์ ๋ฐํ
import math
print(math.sqrt(7)) # 7์ ์ ๊ณฑ๊ทผ์ ์ถ๋ ฅ 2.6457513110645907
gcd(a, b) a์ b์ ์ต๋๊ณต์ฝ์
import math
print(math.gcd(21, 14)) # 7
import math
print(math.pi) # 3.141592653589793 ํ์ด ์ถ๋ ฅ
print(math.e) # 2.718281828459045 ์์ฐ์์ e ์ถ๋ ฅ
๋ณธ ๊ฒ์๋ฌผ์ [ ์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ - ๋๋๋น ] ์ ์ฐธ์กฐํ์ฌ ์ ๋ฆฌํ ๊ฒ์๊ธ์ ๋๋ค.
'๐ตCoding Test > Syntax' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Python ] ์ ์ถ๋ ฅ (0) | 2022.02.04 |
---|---|
[ Python ] ํจ์ (0) | 2022.02.04 |
[ Python ] ๋ฐ๋ณต๋ฌธ (0) | 2022.02.04 |
[ Python ] ์กฐ๊ฑด๋ฌธ (0) | 2022.02.04 |
[ Python ] ์๋ฃํ (0) | 2022.02.04 |