Python – 코딩 테스트 주요 코드 모음

스택

stack = []

stack.append(5) # [5]
stack.append(2) # [5, 2]
stack.append(3) # [5, 2, 3]
stack.append(7) # [5, 2, 3, 7]
stack.pop() # [5, 2, 3]
stack.append(1) # [5, 2, 3, 1]
stack.append(4) # [5, 2, 3, 1, 4]
stack.pop() # [5, 2, 3, 1]

print(stack[::-1])  # 최상단부터 출력 -> [1, 3, 2, 5]
print(stack)  # 최하단부터 출력 -> [5, 2, 3, 1]

from collections import deque

queue = deque()

queue.append(5) # [5]
queue.append(2) # [5, 2]
queue.append(3) # [5, 2, 3]
queue.append(7) # [5, 2, 3, 7]
queue.popleft() # [2, 3, 7]
queue.append(1) # [2, 3, 7, 1]
queue.append(4) # [2, 3, 7, 1, 4]
queue.popleft() # [3, 7, 1, 4]

print(queue) # [3, 7, 1, 4]
queue.reverse()
print(queue) # [4, 1, 7, 3]

DFS
(방문 -> 방문 안 한 이웃 확인 -> 반복)

def dfs(graph, v, visited):
  visited[v] = True
  print(v, end=' ')
  for i in graph[v]:
    if not visited[i]:
      dfs(graph, i, visited)

graph = [
  [],
  [2, 3, 8],
  [1, 7],
  [1, 4, 5],
  [3, 5],
  [3, 4],
  [7],
  [2, 6, 8],
  [1, 7]
]

visited = [False] * 9
dfs(graph, 1, visited)
    

BFS
(방문<큐에서 빼기> -> 방문 안 한 이웃 큐에 넣기 -> 반복)

from collections import deque

def bfs(graph, start, visited):
  visited[start] = True
  queue = deque([start])
  
  while queue:
    v = queue.popleft()
    print(v, end = ' ')
    
    for i in graph[v]:
      if not visited[i]:
        queue.append(i)        
        visited[i] = True

graph = [
  [],
  [2, 3, 8],
  [1, 7],
  [1, 4, 5],
  [3, 5],
  [3, 4],
  [7],
  [2, 6, 8],
  [1, 7]
]

visited = [False] * 9
bfs(graph, 1, visited)

이진 탐색





다익스트라 알고리즘





플로이드-워셜 알고리즘





크루스칼 알고리즘





위상정렬 알고리즘





Leave a Reply

Your email address will not be published. Required fields are marked *