์ฝ๋ฉ ํ ์คํธ๋ฅผ ์ํ ํ์ด์ฌ ๋ฌธ๋ฒ - ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ด๊ฐ ํท๊ฐ๋ฆฌ๊ฑฐ๋ ๋ชฐ๋๋ ๋ถ๋ถ๋ง ๊ธฐ๋กํ๋ค โ๏ธ
- ํ์ด์ฌ ์ปค๋ฎค๋ํฐ์์ ๋ค์ฌ์ฐ๊ธฐ๋ 4๊ฐ์ ๊ณต๋ฐฑ๋ฌธ์๊ฐ ์ฌ์ค์ ํ์ค์ด๋ค.
์ฝ๋ฉ ํ ์คํธ๋ฅผ ์ค๋นํ๋ฉด ๋ฐ๋์ ์์์ผ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
1. ๋ด์ฅ ํจ์
print()
,input()
๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ ์ถ๋ ฅ +sorted()
์ ๊ฐ์ ์ ๋ ฌ ๊ธฐ๋ฅ์ ํฌํจํ ๊ธฐ๋ณธ ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
result = eval("(3+5)*7")
# 56
result2 = sorted([('ํ๊ธธ๋', 35), ('์ด์์ ', 75), ('์๋ฌด๊ฐ', 50)], key = lambda x: x[1], reverse = True)
# [('์ด์์ ', 75), ('์๋ฌด๊ฐ', 50), ('ํ๊ธธ๋', 35)]
2. itertools
- ์์ด๊ณผ ์กฐํฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต
from itertools import permutations, combinations, product
data = ['A', 'B', 'C']
result1 = list(permutations(data, 3)) # ์์ด ๊ตฌํ๊ธฐ
result2 = list(combinations(data, 2)) # ์กฐํฉ ๊ตฌํ๊ธฐ
result3 = list(product(data, repeat=2)) # ์์ด ๊ตฌํ๊ธฐ (์ค๋ณต ํ์ฉ)
3. heapq
- ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ฐ์ ์์ ํ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ค.
- min heap์ผ๋ก ๊ตฌ์ฑ๋์ด ์์, ์ค๋ฆ์ฐจ์ ์ ๋ ฌ O(NlogN)
- max heap์ ํ๋ ค๋ฉด ๋ถํธ๋ฅผ ๋ฐ๋๋ก ํ๋ค!
import heapq
h = []
heapq.heappush(h, value) # ์์ ์ฝ์
heapq.heappop(h) # ์์ ๊บผ๋ด๊ธฐ
4. bisect
- ์ด์ง ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
bisect_left()
bisect_right()
ํจ์๊ฐ ๊ฐ์ฅ ์ค์ํ๊ฒ ์ฌ์ฉ๋จ ->O(logN)
bisect_left(a, x)
: ์ ๋ ฌ๋ ์์๋ฅผ ์ ์งํ๋๋ก ๋ฆฌ์คํธ a์ ๋ฐ์ดํฐ x๋ฅผ ์ฝ์ ํ ๊ฐ์ฅ ์ผ์ชฝ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋ ๋ฉ์๋bisect_right(a, x)
: ์ ๋ ฌ๋ ์์๋ฅผ ์ ์งํ๋๋ก ๋ฆฌ์คํธ a์ ๋ฐ์ดํฐ x๋ฅผ ์ฝ์ ํ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋ ๋ฉ์๋
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
5. collections
- ๋ฑ, ์นด์ดํฐ ๋ฑ์ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํฌํจํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
deque
: ํ๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉ, ๋ฆฌ์คํธ์ ๋ค๋ฅด๊ฒ ์ธ๋ฑ์ฑ์ด๋ ์ฌ๋ผ์ด์ฑ์ ๋ถ๊ฐ๋ฅ, ์คํ์ด๋ ํ์ ์๋ฃ๊ตฌ์กฐ ๋์ฉ์ผ๋ก ์ฌ์ฉํ ์ ์์, ๋งจ ์์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ๋ ๋ฆฌ์คํธ๋O(N)
์ด์ง๋ง ๋ฑ์O(1)
Counter
: ๋ฑ์ฅ ํ์๋ฅผ ์ธ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
from collections import deque, Counter
data = deque([2, 3, 4])
data.appendleft(1)
data.append(5)
print(list(data)) # [1, 2, 3, 4, 5]
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue']) # 3
print(dict(counter)) # {'red': 2. 'blue': 3, 'green': 1}
6. math
- ํ์์ ์ธ ์ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ex. ํฉํ ๋ฆฌ์ผ, ์ ๊ณฑ๊ทผ, ์ผ๊ฐํจ์, ํ์ด ์์ ๋ฑ
import math
print(math.factorial(5)) # 5! => 120
print(math.gcd(21, 14)) # 7
์ฐธ๊ณ ์๋ฃ : ์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค (๋๋๋น ์ )