list에서 idx를 알아내거나 요소를 반환할때 시간복잡도는 O(n)이다.
deque 라이브러리를 만들어서 stack 및 queue로 활용한다면 시간복잡도를 O(1)으로 줄일 수 있어 코딩테스트를 푸는데 있어 시간 개선의 효과가 있고 효율성이 있는 문제의 효율성을 높일 수 있다.
from collections import deque
stack = deque()
queue = deque()
# 추가 append
a.append(1)
print (a)
# deque([1])
# 왼쪽 (0번 idx) 추가
a.appendleft(0)
print (a)
# deque([0, 1])
# 가장 오른쪽 요소 반환 및 제거
a = deque([1,2,3])
tmp = a.pop()
print (tmp)
# 3
print (a)
# deque([1,2])
# 0번 idx 요소 반환 및 제거
a= deque([1,2,3])
tmp = a.popleft()
print (tmp)
# 1
print (a)
# deque([2,3])
# extend - list 오른쪽 추가 (오름차순)
a.extend([1,2])
print(a)
# deque([1, 2])
# extendleft - list 왼쪽 추가 (오름차순)
a.extendleft([3,2,1] )
print(a)
# deque([1, 2, 3, 1, 2])
# 양수방향
a=deque([1,2,3,4,5,6])
a.rotate(1)
print(a)
# deque([6, 1, 2, 3, 4, 5])
a.rotate(2)
print(a)
# deque([3, 4, 5, 6, 1, 2])
# 음수방향
a=deque([1,2,3,4,5,6])
a.rotate(-1)
print(a)
# deque([2, 3, 4, 5, 6, 1])
a.rotate(-3)
print(a)
# deque([5, 6, 1, 2, 3, 4])
a= [1,1,2,1,3,4,5,2,3,4,5]
print (set(a))
# {1, 2, 3, 4, 5}
# 리스트 중복된거 찾기 (리스트 중복검사는 set)
a = [2,3,4]
b = [4,5,6]
common = set(a).intersection(b)
print (common)
# {4}
# 1부터 10까지 중 짝수인 수만 tmp_list에 추가
# (1) list선언하고, for문 안에 if문 안에 append(추가) 사용
tmp_list = []
for i in range(1, 11):
if i % 2 == 0:
tmp_list.append(i)
# (2) 리스트 컴프리헨션으로 한줄로 list생성
tmp_list = [i for i in range(1,11) if i%2==0]
print (tmp_list)
# [2, 4, 6, 8, 10]
# 단, 한 줄로 인덱스와 값을 [idx, value] 형태로 list 만들기.
tmp= [10,20,30,40,50]
queue = [[i, p] for i, p in enumerate(tmp)]
print (queue)
# [[0, 10], [1, 20], [2, 30], [3, 40], [4, 50]]
# 이중 for문
tmp_list = [x * y for x in range(2, 5) for y in range(1, 10)]
print (tmp_list)
# [2, 4, 6, 8, 10, 12, 14, 16, 18,
# 3, 6, 9, 12, 15, 18, 21, 24, 27,
# 4, 8, 12, 16, 20, 24, 28, 32, 36]
visit =[[False for c in range(col)] for r in range(row)]