sipsyong   5년 전

BFS를 이용하여 문제를 풀었습니다.

예를 들어 

1 2 3

4 0 5

6 7 8 의 배열의 경우

======

1 0 3

4 2 5

6 7 8

----------

1 2 3

0 4 5

6 7 8

----------

1 2 3

4 5 0

6 7 8

----------

1 2 3

4 7 5

6 0 8

----------

과 같이 현재 0의 상하좌우 숫자를 바꾸는 방식으로 진행을 했습니다.

bfs를 위한 deque에는 각 배열을 숫자로 풀어서 int를 사용했습니다.

예시의 맨 위 배열의 경우 값이 123405678이 됩니다.

또, bfs를 순회하는 중에 중복된 배열의 접근을 방지하기 위해서 

vector에 값을 집어넣고 find를 통해서 vector에 해당 값이 없는 경우에만 bfs를 진행하였습니다.

이렇게 되면 모든 가능한 배열의 조합인 경우의 수가 362,880 이라고 생각하고 코드를 실행했는데 속도가 너무 느립니다.

어느 부분에서 잘못이 있는지 어떻게 바꾸면 좋을지 조언 부탁드려도 될까요?

긴 질문글 읽어주셔서 감사합니다.

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