jy1559   1년 전

정답은 맞췄으나 시간이 오래 걸립니다. 

3가지 벽 세울 조합을 모두 구해서 각 경우의 수를 BFS 돌리는 아이디어를 생각하고 짜서 바로 맞추긴 했습니다.

근데 5876ms로 굉장히 오래 걸려서 다른 코드들을 살펴보던 중 1488ms로 4배가량 속도차이가 나는 코드를 봤는데

아이디어는 거의 동일하고 세세한 부분에서 조금 차이가 납니다.

차이를 살펴보면 빠른 코드에서는 그래프를 1차원 배열로 만든 것과, 제가 BFS 후 전체 그래프를 한 번 더 돌면서 안전구역을 센 것 정도 같습니다.

그래서 그래프 돌며 안전구역 찾는 것을 빼고 빠른 코드처럼 바이러스 감염될때마다 숫자 세는거로 바꿔도 5664ms로 크게 달라지지 않았습니다.

deepcopy가 문제인 걸까요? 아니면 다른 문제가 있는건가요? 


고수님들 도와주세요...

rhzn5512   1년 전

얕은 복사를 사용하고자 1차원 배열로 만든 점이 유효하게 작용하신 것 같습니다.

1번 코드는 얕은 복사를 사용하지 못합니다. (n 차원의 배열에서 내부 배열의 주소 값이 원본 주소와 같고, 제일 바깥쪽 배열은 원본 주소와 다릅니다.)

얕은 복사의 경우 1차원 배열에서 메모리 주소 값이 다릅니다.

아래 코드는 얕은 복사를 사용하고자 1차원 배열로 만든 것이고, 얕은 복사를 사용할 수 있음으로서 루프가 확연히 줄어들게 됩니다.(기본적으로 1차원 배열과 2차원 배열의 성능 차이는 거의 없음)

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