Data Analysis & Merketing
[Python] 백트래킹에서의 전역변수 global 본문
프로그래밍 언어에서 변수를 분류하는 방법은 여러가지가 있다. 그 중에 하나로 전역변수와 지역변수의 개념이 있다.
일반적으로 전역변수는 프로그램에 혼란을 주기 때문에 권장하지 않지만 간혹 더 쉽게 코딩할 수 있기 때문에 사용하기도 한다.
함수 안의 변수들은 지역변수이므로 함수영역 밖에서는 호출하여 사용할 수 없다.
def exam():
a = 3
b = 2
return a+b
위의 경우에서 변수 a, b는 지역변수이기 때문에 함수 밖 영역에서 호출하여 사용할 수 없다.
함수 밖 영역에서 사용하려면 a를 전역변수로 선언해야 한다.
전역변수로 선언하는 방법
변수명 앞에 global을 붙이는 것이다. 함수 안에서 붙여도 되고, 함수 밖에서 붙여도 된다.
하지만 함수 밖에서 선언하였다면 함수 안에서 사용을 명시해주어야 한다.
# 함수 안에서 전역변수 선언
def exam():
global a
a = 3
b = 2
return a+b
# 함수 밖에서 전역변수 선언
global a
a = 1
def exam():
global a
a = 3
b = 2
return a+b
함수 밖에서 global로 전역변수 선언을 했어도 함수 안에도 전역변수 사용을 명시해 주어야 한다.
함수 안에서 전역변수 사용을 명시해주지 않으면 해당 변수는 지역변수로 처리되고 만다. (함수 안에 있는 global a를 삭제하면 a = 1)
유용한 사용법
전체 코드에서 체크해야 하는 값이 있을 때 전역변수를 사용하면 편리하다.
함수가 있는 코드를 실행하거나 수정할 때 에러가 발생하거나 값이 맞지 않으면 확인하기가 곤란하다. 이럴 때 함수 안의 변수를 지역변수로 선언하면 코드를 실행하면서 함수 안의 값들을 확인할 수 있기 때문에 유용하다. (프로그램을 디버깅할 때 편리한 방법)
백트래킹에서의 global
answer = 0
def backtracking(k, count, dungeons, visited):
global answer
if count > answer:
answer = count
for i in range(len(dungeons)):
if not visited[i] and k >= dungeons[i][0]:
visited[i] = True
backtracking(k-dungeons[i][1], count+1, dungeons, visited)
visited[i] = False
def solution(k, dungeons):
visited = [False] * len(dungeons)
backtracking(k, 0, dungeons, visited)
return answer
'Python' 카테고리의 다른 글
[Python] print할 때 정렬하기 (0) | 2023.02.02 |
---|---|
[Python] 완전탐색 알고리즘 (0) | 2023.01.26 |
[Python] BFS와 DFS (0) | 2023.01.17 |
[Python] 백트래킹(BackTracking) (0) | 2023.01.17 |
[Python] 힙(Heap) (0) | 2023.01.13 |