개발/파이썬

python. 얕은복사와 깉은복사 (feat. 백준 15683)

ttoance 2023. 8. 24. 06:31

얕은 복사(shallow copy)와 깊은 복사(deep copy)

- 얕은 복사 : 원본 값과 복사된 값이 같은 참조(=메모리 주소)를 가리키는 것 

> 객체 안에 객체가 있는 경우, 한 개의 객체라도 원본 객체를 참조하면 얕은 복사라고 볼 수 있음. 

- 깊은 복사 : 새로운 메모리 공간을 확보해 완전히 복사하는 것 

 

 

파이썬에서의 얕은 복사(shallow copy)와 깉은 복사(deep copy)

https://wikidocs.net/16038

 

12. 얕은 복사(shallow copy)와 깊은 복사(deep copy)

## 1. mutable과 immutable 객체 객체에는 mutable과 immutable 객체가 있습니다. ❈ 객체 구분 표 class 설명 구분 l…

wikidocs.net

 

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

 

15683번: 감시

스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감

www.acmicpc.net

 

 

 

참고

- https://cocobi.tistory.com/156

반응형