min3209258   1년 전

input:

4 6

0 0 0 0 0 0

1 0 0 0 0 2

1 1 1 0 0 2

0 0 0 0 0 2

49번 줄에서 벽을 세우기 전에 임시 행렬을 초기화 해주고자, 

처음 입력받은 Matrix 변수를 이용해 temp = matrix 작성하였습니다.

(48번줄 - 임의로 벽을 세우는 조합 2가지로 반복 시켜놨습니다.)

그럼 print(matrix)의 경우 처음 입력받은 matrix를 변경시킨 코드는 없으니까 Input 값과 동일하게 나와야하는데, 

virus 전파를 수행한 bfs 함수 후에 matrix로 바뀐 것으로 보입니다..

왜 그런지 이유를 모르겠어서 질문 드립니다 ㅜㅜㅜ

output:(49번줄 print 결과)

[[0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 2], [1, 1, 1, 0, 0, 2], [0, 0, 0, 0, 0, 2]]

[[2, 2, 2, 2, 2, 2], [1, 2, 2, 2, 2, 2], [1, 1, 1, 2, 2, 2], [0, 1, 0, 1, 1, 2]]

mastershim   1년 전

temp = matrix를 하면 shallow copy가 되어 temp의 값을 바꾸어도 matrix의 값이 바뀌게 됩니다.

의도하신 대로 사용하려면 deepcopy를 사용해야합니다. 

shallow copy에 대해 공부해보시는 걸 추천합니다 :)

min3209258   1년 전

@mastershim

감사합니다 ㅜㅜㅜ 복받으실거예요...

copy도 공부 해야겠네요 ㅜ 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.