반응형
얕은 복사(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
참고
반응형
'개발 > python' 카테고리의 다른 글
python. /와 // 차이 (0) | 2023.10.17 |
---|---|
python. set 과 dict 차이 (2) | 2023.10.05 |
python. immutable과 mutable (0) | 2023.08.29 |
python. 띄어쓰기(개행문자) 없이 print 찍고 싶을때 (간단한 별찍기) (0) | 2022.12.11 |
python. __file__ 의미 (0) | 2021.07.28 |