hik3562   4년 전

치킨배달에서 집의 개수가 2N을 넘지 않는다면 최대 2N-1 라고 생각했고,

N이 최대 50 이므로, 위에 작성한대로라면 집의 최대개수는 99개가 될 것으로 짐작합니다. 

주어진 문제에서 메모리는 512M 이므로, 512,000 까지 허용될 것이고 

제가 접근한 방식은 for문 2번을 돌려서 전체 맵을 순회하는 코드를 작성하였는데 

99개의 각각의 집에서 전체 맵을 순회 한다면 2500 횟수가 발생할 것이고 

99개 집이 전체 맵을 다 순회한다면 99*2500 = 247,500 번이 나오게 됩니다. 

이때 247,500 번은 512,000 안에 들기때문에 메모리 초과가 나지 않는것으로 짐작해 볼 수 있는걸까요?


감사합니다.

djm03178   4년 전

순회를 2500번을 한다고 해서 메모리도 매번 할당받는지는 코드에 따라 다릅니다. 안 그런 코드가 훨씬 많겠죠.

그리고 탐색이라는 게 꼭 그 99개의 집만 연관된 것이 아니고 집이 아닌 공간들도 당연히 메모리를 차지합니다.

또한 각 '정보'의 단위가 무엇인지도 굉장히 모호한데, 개당 1바이트를 쓰는 정보와 100바이트를 쓰는 정보는 전혀 다릅니다. 단순히 갯수만 더하고 곱한다고 해서 답이 나오는 것이 아니고, 구체적인 코드를 봐야 계산을 할 수가 있습니다.

마지막으로 2N개를 넘지 않는다는 말은 2N개도 될 수 있다는 뜻이니 집은 100개까지 있을 수 있습니다.

djm03178   4년 전

그리고 메모리를 매번 할당받는다고 하더라도 무조건 누적시킬 수 있는 것이 아니라 중간에 해제가 일어나는지도 봐야 됩니다. 예를 들어 루프 안에 지역 변수를 선언했다면 그 변수는 매번 할당되고 해제되는 것을 반복하니 누적이 되지 않습니다.

hik3562   4년 전

설명이 정말 와닿았습니다. 너무 감사드립니다.

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