[Python] List VS Queue
Updated:
[Programmers] ๊ธฐ๋ฅ๊ฐ๋ฐ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ํ๋ฅผ ์ฌ์ฉํ๋ค.
List ๋ก ๋ง๋ค๊ณ pop(0) ์ผ๋ก ๊ตฌํ์ ํ๋๋ฐ ๋ฌธ๋ ์๋ฌธ์ด ๋ค์๋ค.
List ์ append, pop ๊ธฐ๋ฅ์ด ๋ค ์๋๋ฐ ์ collections ๋ชจ๋์ deque ๋ชจ๋์ด ์๋ ๊ฒ ์ผ๊น?
๊ฒ์์ ํด๋ณด๋ ์ค ๋ฐ์ฑ ๋ ๋ฐ์ฑ์ ํ๊ฒ ๋์๋ค..
์๋ฃ๊ตฌ์กฐ ์๊ฐ์ ๋ถ๋ช ํ ๋ฐฐ์ ๋ค.. ๋น ์ค! ์์ ์ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ..
๋น์ฐํ List ๋ก ๋ง๋ค๊ณ pop(0) ์ ํ๋ค๋ฉด ๋ค์ ์๋ ๋ฐ์ดํฐ๋ค์ ์ธ๋ฑ์ค๋ฅผ ์์ผ๋ก ์ ๋ถ ๋น๊ฒจ์ค์ผ ํ๋ค.
๊ฒ์ผ๋ก๋ O(1) ๊ฐ์ ๋ณด์ด์ง๋ง ์์ผ๋ก๋ O(n) ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ ์ด๋ค.
๊ทธ๋์ ์๊ฐ ๋น๊ต๋ฅผ ํ ๋ฒ ํด๋ดค๋ค.
import time
from collections import deque
'''
๋ฆฌ์คํธ๋ก ๊ตฌํ ํ ํ์ ํ๋ฅผ ์ฌ์ฉํด ์๊ฐ์ ๋น๊ต ํ๋ค.
1. ๋ฆฌ์คํธ์ append ๋ฅผ ํ ์๊ฐ
2. ํ์ append ๋ฅผ ํ ์๊ฐ
3. ๋ฆฌ์คํธ์ pop(0) ์ ํ ์๊ฐ
4. ๋ฆฌ์คํธ๋ฅผ ๋ค์ง์ด pop() ์ ํ ์๊ฐ
5. ํ์ popleft() ๋ฅผ ํ ์๊ฐ
'''
size = 1000000
start_time = time.time()
_list = []
for i in range(size):
_list.append(i)
print('๋ฆฌ์คํธ์ append ๋ฅผ ํ ์๊ฐ : {}'.format(time.time() - start_time))
start_time = time.time()
_deque = deque()
for i in range(size):
_deque.append(i)
print('ํ์ append ๋ฅผ ํ ์๊ฐ : {}'.format(time.time() - start_time))
print('-----------------------------------------------------------------')
start_time = time.time()
for i in range(size):
_list.pop(0)
print('๋ฆฌ์คํธ์ pop(0) ์ ํ ์๊ฐ : {}'.format(time.time() - start_time))
for i in range(size):
_list.append(i)
start_time = time.time()
_list_rev = _list[::-1]
for i in range(size):
_list_rev.pop()
print('๋ฆฌ์คํธ๋ฅผ ๋ค์ง์ด pop() ์ ํ ์๊ฐ : {}'.format(time.time() - start_time))
start_time = time.time()
for i in range(size):
_deque.popleft()
print('ํ์ popleft ๋ฅผ ํ ์๊ฐ : {}'.format(time.time() - start_time))
๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ๋์๊น ? ๋ฐฑ๋ง๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ธก์ ์ ํด๋ดค๋ค.
append ๋ ๊ด์ฐฎ์ง๋ง pop์์ ์ด๋ง ๋ฌด์ํ ์๋ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค..
๋ฆฌ์คํธ๋ฅผ ๋ค์ง์ด pop() ํ๋ ๊ฒฝ์ฐ๋ ํ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ๊ทธ๋ ๊ฒ ์ฌํ ์ฐจ์ด๋ ๋์ง ์๋๋ค.
๊ทธ๋ ๋ค๊ณ ํ๋ฅผ ์ฌ์ฉ ํ ๋๋ง๋ค ๋ฆฌ์คํธ๋ก ๋ค์ง์ด์ ์ฌ์ฉ ํ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ์๋ฏธ๋ ์๋ค!
์๊ธฐ ์ ์ ํ๊ฒ ํ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉ ํ๋๋ก ํ์..
Leave a comment