Treasure Island

문제 복기

  • 알고리즘 생각 1. 일단 (0,0)에서 시작하여 (r,c)까지 순회하는 BFS를 구현하여 d배열 중 가장 큰값을 리턴하도록 만든다. 2. 1에서 발전시키기 - main : 1에서 시작점을 (0,0)으로 고정하는 것이 아니라 (0,0) ~(r,c) 사이 모든 좌표가 시작점이 되도록 이중 for문으로 구현한다. - bfs 함수 : 거리값을 저장하는 배열 d도 bfs 내에서 초기화한다. 새로운 시작점에 대해 d배열의 최댓값을 새로이 생성하여 리턴한다.

  • 코드 최적화 - 실패, 실패원인 분석 2차원 배열 값을 입력받으면서 값이 'L'이면 bfs를 진행하여 정답을 도출하고자 했다. 디버깅 결과 d배열값이 제대로 기록되지 않음을 확인할 수 있었다. 그 이유는 (i,j)값을 입력받고 값이 'L' 을 만족하여 bfs를 순회할지라도, (i+1,j+1) ~(r-1,c-1) 입력값은 미지의 값이기 때문에 bfs 내에서 상하좌우 탐색 및 값 세팅하는 데에 조건을 만족하지 않기 때문에 d배열 값이 제대로 기록되지 않기 때문이다!!!!

따라서 이 방법으로 코드 최적화를 할 순 없다. 2차원 배열값을 다 입력받은 후에 bfs를 실행하고, 정답을 도출해야 한다!

(0,1)에서 시작하는 bfs 실행 후 d배열 값

Last updated

Was this helpful?