2016년 11월 22일 화요일

BOJ 13903 출근

음 일반적인 bfs문제이다. 처음 시작점이 될 수 있는 1행의 세로블럭들을 큐에 다 넣어두고 bfs탐색을 시작한다. 하지만 내가  bfs문제를 오랜만에 풀어서 그런지... 틀렸다. 그리고 도저히 원인을 찾을 수 없다가 도움을 받아 겨우 원인을 찾았다. 바로 .... 처음에 1행의 세로블럭들(출발점들)을 큐에 넣을 때, 방문했다는 표시를 하지 않은 것이다... 아 이런 실수를... 전에도 이런 실수를 했었는데... 으악...난 내 코드에는 문제 없다고 생각하고 그냥 문제에 내가 생각치 못한 함정이 있는 것인가 생각하고 있었다.

만약 처음 출발점을 방문했다는 표시를 하지 않을 경우, 생길 수 있는 문제에 대해 생각해보자. 그 출발점에서 출발해서 다시 돌아오는 건 별 상관없어보인다. 도착점까지의 최단거리만 구하면 되니까... 하지만 출발점이 여러개이기 때문에 한 출발점에서 다른 출발점으로 이동해서 그 시작점의 dist를 0에서 1로 바꿔버릴 수 있다. 그렇게 되면 도착점까지의 최단거리를 제대로 구할 수 없을 수도 있다.

앞으로 조심하자.

댓글 없음:

댓글 쓰기