his130   6년 전

일단 크게 BFS를 사용해서 문제를 풀었습니다.

그 과정에서 상태 하나하나를 배열로 표현하려고 했습니다.

1 2 3

4 5 6

7 8 0

같은 경우 123456780으로 표현하고 string 으로 바꾼후 다시 int형으로 변환하였습니다.

그리고 bfs에서 visit 배열의 경우에 최대 876543210 이지만 이는 너무 커서

87654321 까지로 나타냈습니다. 즉 끝에 자리 하나는 없애서 배열을 만든거죠...

근데 이게 visual 에서는 돌아가는건지, 정답 코드를 올리면 런타임 에러가 출력됩니다.

혹시 이부분이 아닌 다른 문제가 있는건지 잘 모르겠네요..

좀 도와주세요..


godmoon00   6년 전

int dist[87654321]; 는 대략 334MB 입니다 문제의 메모리 제한은 16MB 이므로 다른 알고리즘을 이용하셔야 합니다.

his130   6년 전

아 그렇군요..

혹시 메모리 계산하는 방법은 어떻게 하신건지 알려주실 수 있나요??

chogahui05   6년 전

대략적으로 1M = 100만 byte라고 생각하시면 편합니다. (정확히는 1048576byte = 1M이긴 한데..)

87654321 = 대충 87M (87 * 100만)

int 1개당 4byte라면 328M


state가 생각보다 그렇게 많이 나타나진 않아요.

his130   6년 전

가르쳐주셔서 감사합니다!

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