ํ์ด์ฌ์ collections ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๊ทธ ์ค ๋ง์ด ์ฌ์ฉ๋๋ deque์ Counter์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
ํ์ด์ฌ์์ ํ๋ฅผ ๊ตฌํํ๋๋ฐ ์์ด Queue๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ง๋ง ์ผ๋ฐ์ ์ธ ํ๋ฅผ ๊ตฌํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋๋๋ค. ๋ฐ๋ผ์ deque๋ฅผ ์ด์ฉํ์ฌ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์คํธ ๊ฐ์ฅ์์ ์์๋ฅผ ์ฝ์ ํ ๋ ์๊ฐ ๋ณต์ก๋๋ O(N)์ ๋๋ค. ํ์ง๋ง deque์ appendleft()๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ๋ณต์ก๋๋ฅผ O(1)๋ก ์ค์ผ ์ ์์ต๋๋ค.
๋ฆฌ์คํธ | deque | |
๊ฐ์ฅ ์์ชฝ์ ์์ ์ถ๊ฐ(appendleft(x)) | O(N) | O(1) |
๊ฐ์ฅ ๋ค์ชฝ์ ์์ ์ถ๊ฐ(append(x)) | O(1) | O(1) |
๊ฐ์ฅ ์์ชฝ์ ์๋ ์์ ์ ๊ฑฐ(leftpop()) | O(N) | O(1) |
๊ฐ์ฅ ๋ค์ชฝ์ ์๋ ์์ ์ ๊ฑฐ(pop()) | O(1) | O(1) |
deque๋ก ์ ์ธํ ๋ฆฌ์คํธ์์๋ ์ผ๋ฐ์ ์ธ ๋ฆฌ์คํธ์์ ์ฌ์ฉํ ์ ์๋ ์ธ๋ฑ์ฑ, ์ฌ๋ผ์ด์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ง, ๋ฆฌ์คํธ์ ์์ ํน์ ๋ ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ์ฌ ์ญ์ ํ ๋๋ ์๋นํ ํจ์จ์ ์ ๋๋ค.
from collections import deque
data = deque([2, 3, 4])
data.append(5)
data.appendleft(1)
print(data)
print(list(data))
data.pop()
data.popleft()
print(data)
print(list(data))
collections ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Counter๋ ๋ฑ์ฅ ํ์๋ฅผ ์ธ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์์๋ณ ๋ฑ์ฅ ํ์๋ฅผ ์ธ๋ ๊ธฐ๋ฅ์ด ํ์ํ ๋ ์งง์ ์์ค์ฝ๋๋ก ์ด๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'blue', 'green', 'red'])
print(counter['blue'])
print(counter['red'])
print(dict(counter))
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Server] ๋ฆฌ๋ ์ค ์ปค๋(kernel)์ด๋? (4) | 2021.03.02 |
---|---|
[Python] sort()์์์ key lambda ์ฌ์ฉํ๊ธฐ (0) | 2021.02.22 |
[Python] ์์ด, ์กฐํฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ itertools (0) | 2021.02.17 |
[Python] ํ์ด์ฌ 2์ฐจ์ ๋ฆฌ์คํธ ์ด๊ธฐํ (0) | 2021.02.17 |
[Python] ๋ฆฌ์คํธ ํน์ ๊ฐ ๋ชจ๋ ์ ๊ฑฐํ๊ธฐ (0) | 2021.02.17 |