문제 출처: https://www.acmicpc.net/problem/7576
# 입력 받은 모든 토마토 상태 그래프
graph = [list(map(int, input().split())) for _ in range(n)]
# 모든 토마토가 익었을 때의 그래프
finish_graph = graph
print(graph)
for i in range(n):
for j in range(m):
if finish_graph[i][j] == 0:
finish_graph[i][j] = 1
print(graph)
graph 출력 결과
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]]
[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]]
기존 graph 값이 변해버렸다. > shallow copy 결과
deep copy는 전체 복사로 참조값의 복사가 아닌 참조된 객체 자체를 복사하는 것
- copy모듈의 deepcopy() 이용
import copy
# 입력 받은 모든 토마토 상태 그래프
graph = [list(map(int, input().split())) for _ in range(n)]
# 모든 토마토가 익었을 때의 그래프
finish_graph = copy.deepcopy(graph)
print(graph)
for i in range(n):
for j in range(m):
if finish_graph[i][j] == 0:
finish_graph[i][j] = 1
print(graph)
graph 출력 결과
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]]
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]]
graph 자체는 변하지 않게 된다.
자세한 설명은
아래 블로그 참고하면 된다.
https://crackerjacks.tistory.com/14
'Computer Science > Algorithm' 카테고리의 다른 글
[백준] 2292 벌집문제 - 브론즈2인데 왜 못 풀었을까. 간단한데 (0) | 2023.02.22 |
---|---|
[백준] 7576번 토마토 상자 - 시간초과.. BFS 활용하자 (0) | 2023.02.20 |
BFS DFS 정복하기 (0) | 2023.02.20 |
약점보완: Dynamic Programming (0) | 2023.02.09 |
[백준] 2164번 카드2 - 시간초과, 짝수 홀수 인덱스만 추출하기 (0) | 2023.02.02 |