💡문제접근
- 실버2 문제치고는 조금... 복잡해서 애를 먹었던 문제였다.
import copy
를 통해서 기존의 2차원 배열을 하나 복사하여 현재 상태의 지도와 50년 후의 지도 두 개를 별개로 만들어 코드를 작성했다.
💡코드(메모리 : 31840KB, 시간 : 64ms)
import copy
import sys
input = sys.stdin.readline
R, C = map(int, input().strip().split())
Map = []
for i in range(R):
Map.append(list(input().strip()))
new_Map = copy.deepcopy(Map)
dx = [0, 1, 0, -1]
dy = [-1, 0, 1, 0]
for i in range(R):
for j in range(C):
sea_count = 0
if Map[i][j] == ".":
continue
else:
for t in range(4):
nx = i + dx[t]
ny = j + dy[t]
if 0 <= nx < R and 0 <= ny < C:
if Map[nx][ny] == ".":
sea_count += 1
else:
sea_count += 1
if sea_count >= 3:
new_Map[i][j] = "."
start = 0
end = 0
for i in range(R):
if "X" in new_Map[i]:
start = i
break
for i in range(R-1, -1, -1):
if "X" in new_Map[i]:
end = i
break
temp = []
for i in range(C):
for j in range(start, end+1):
if new_Map[j][i] == "X":
temp.append(i)
break
for i in range(start, end+1):
print("".join(new_Map[i][temp[0]:temp[-1]+1]))
📌 DFS와 BFS에서 가끔 사용하는 테크닉인 copy
모듈에 대해서 정리

- 위 그림을 보면 알다시피
배열 a
와 배열 b
는 별개의 배열이다. 이 때, 배열 b
는 얕은 복사를 통해서 1, 2, 3 객체를 참조하는 새로운 요소를 생성한다.

id
함수는 객체의 고유값을 리턴해준다. 위 그림을 보면 배열 a
와 배열 b
가 참조하는 객체는 동일한데 배열 a
와 배열 b
가 참조하는 것은 다르다는 것을 알 수 있다.

- 위 그림을 보면
배열 a
와 배열 b
가 참조하는 객체와 배열 a
와 배열 b
가 참조하는 것 둘 다 다르다는 것을 알 수 있다.
💡소요시간 : 37m