개발/파이썬
python. 얕은복사와 깉은복사 (feat. 백준 15683)
ttoance
2023. 8. 24. 06:31
얕은 복사(shallow copy)와 깊은 복사(deep copy)
- 얕은 복사 : 원본 값과 복사된 값이 같은 참조(=메모리 주소)를 가리키는 것
> 객체 안에 객체가 있는 경우, 한 개의 객체라도 원본 객체를 참조하면 얕은 복사라고 볼 수 있음.
- 깊은 복사 : 새로운 메모리 공간을 확보해 완전히 복사하는 것
파이썬에서의 얕은 복사(shallow copy)와 깉은 복사(deep copy)
dfs 알고리즘을 풀다가 (백준 15683) 재귀함수를 호출할때, 배열 값을 넘겨야 하는데, 이때 깊은 복사를 하지 않으면, 메모리 주소를 공유하게 되면서, 답이 꼬일 수 있다.
파이썬의 경우, copy.deepcopy를 통해서 깊은복사를 할 수 있다.
cx, cy = cameras[cnt]
for direction in decideDx(cx, cy):
boardsCopy = copy.deepcopy(boards)
checkCamera((cx,cy), direction, boardsCopy)
dfs(cnt + 1, boardsCopy)
https://www.acmicpc.net/problem/15683
참고
반응형