Doby's Lab

Python, Adj List, Global Variable, Recursive call 본문

Code about AI/Python

Python, Adj List, Global Variable, Recursive call

도비(Doby) 2022. 7. 7. 22:59

바로 직전의 포스팅에서 Python을 이용하여 DFS를 구현해보았는데 C++에서는 당연히 사용하던 테크닉들을 정리하여 보았습니다.

 

[Adjust List 구현]

adj = [[] for i in range(0, n)]

[Global Variable]

DFS 코드의 일부분입니다. 문제를 풀면서 당황했던 부분이 이 부분이었습니다. '왜 result에 cnt값이 할당이 안 되지?' 이유를 찾아보았더니 Python에서는 함수 외부에 선언된 전역 변수를 사용하려면 함수 안에서 같은 변수 명의 Global 변수 선언을 해주어야 했습니다.

...
result = -1

def dfs(node, cnt):
    if node == k:
        global result #global 변수를 사용하여 전역변수를 사용하겠다는 뜻
        result = cnt
        ...

[Recursive Call Function]

Recursive Call Function의 첫 구현이면서 Function 자체의 첫 구현이었습니다. 이 부분은 C++과 크게 다른 점이 없어서 혼란이 없었습니다.

def dfs(node, cnt):
    if node == k:
        global result #global 변수를 사용하여 전역변수를 사용하겠다는 뜻
        result = cnt
        return
    
    for i in range(0, len(adj[node])):
        nxt = adj[node][i]
        if visited[nxt] == False:
            visited[nxt] = True
            dfs(nxt, cnt + 1)
            visited[nxt] = False

C++로 풀어본 문제를 Python을 이용하여 코드를 거의 똑같이 작성하며 풀어보았는데 메모리나 시간을 C++보다 어마하게 잡아먹더군요.(입출력을 빠르게 해도)

 

웬만하면 C++로만 PS를 해야겠습니다 :)

728x90