Coding Test/기본 개념

Coding Test/기본 개념

[이론] 다이나믹 프로그래밍 (Dynamic Programming, DP)

한 번쯤은 꼭 짚고 넘어가야 할 개념이라고 판단되어 정리한다. 다이나믹 프로그래밍이란, 동일한 문제는 한 번만 풀도록 하는 것을 말한다. (시간 효율성을 위해서 전에 계산해뒀던 결과값을 저장할 수 있는 공간을 마련한다.) 대표적인 예시는 피보나치 수열이 있다. 다이나믹 프로그래밍은 다음 두 조건을 만족할 때 사용할 수 있다. 1) 큰 문제를 작은 문제로 나눌 수 있다. (작은 문제의 답을 모아서 큰 문제를 해결할 수 있다.) 2) 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. (동일한 작은 문제를 반복적으로 해결해야 한다.)

Coding Test/기본 개념

[이론] DFS, BFS

DFS(Depth-First Search): 깊이 우선 탐색 Stack(OR 재귀)로 구현 # 첫번째: 스택에 넣고 방문처리하기 # 두번째부터: 스택에 있는 것 하나 빼서 방문하지 않은 것이 있으면, 스택에 넣고 방문처리하기 def dfs(graph, vertex, visited): visited[vertex] = True # 스택에 넣고 방문처리하기 print(vertex, end=' ') for i in graph[vertex]: # 스택에 있는 것 하나 빼서 if visited[i] == False: # 방문하지 않은 것이 있으면 dfs(graph, i, visited) # (재귀) BFS(Breath-First Search): 너비 우선 탐색 Queue로 구현 from collections imp..

EUNJI HA
'Coding Test/기본 개념' 카테고리의 글 목록