1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
def recursive(i): if i == 100:
return
print(i,'번째 재귀함수에서', i+1, '번째 재귀함수를 호출')
recursive(i+1)
print(i,'번째 재귀함수를 종료')
# recursive(1)
def factorial(n):
if n <=1:
return 1
return n*factorial(n-1)
print(factorial(10))
def factorial2(n):
result = 1
for i in range(1,n+1):
result*=i
return result
print(factorial2(5))
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
INF = 999999999999 #무한의 비용 선언
# 2차원 리스트를 이용해 인접 행렬 표현
graph =[
[0,7,5],
[7,0,INF],
[5,INF,0]
]
print(graph)
# 행(Row)이 3개인 2차원 리스트로 인접리스트 표현
graph = [[] for _ in range(3)]
# 노드 0 에 연결된 노트 정보 저장(노드, 거리)
graph[0].append((1,7))
graph[0].append((2,5))
# 노드 1 에 연결된 노드 정보 저장(노드, 거리)
graph[1].append((0,7))
# 노드 2에 연결된 노드 정보 저장(노드, 거리)
graph[2].append((0,5))
print(graph)
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# 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]
]
# 각노드가 방문된 정보를 리스트 자료형으로 표현(1차원 리스트))
visited = [False]* 9
# 정의된 DFS 함수 호출
dfs(graph,1,visited)
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#BFS 예제
from collections import deque
# BFS 메서드 정의
def bfs(graph, start, visited):
# 큐(Queue) 구현을 위해 deque 라이브러리 사용
queue = deque([start])
# 현재 노드를 방문 처리
visited[start] = True
# 큐가 빌 때 까지 반복
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]
]
# 각노드가 방문된 정보를 리스트 자료형으로 표현(1차원 리스트))
visited = [False]* 9
# 정의된 BFS 함수 호출
bfs(graph,1,visited)
|
cs |