minjae200   5년 전

우선모든 TC다 통과하고 어디가 잘못되서 틀렸다고 나오는지 모르겠습니다.


아이디어 : (0,0)에서 시작해서 우선 BFS탐색을 시도합니다.

원래 기존에 가지고있던 key를 사용하여 문을 열수있으면 열고 가는식으로 진행하였습니다.

BFS를 마치면 그 과정에서 새롭게 얻은 key를 가지고 다시 door에 저장되어있던 door의 좌표를 통하여

BFS를 시도합니다. 이과정에서 새롭게 key를 주운것이 없으면 더이상 door를 열고 들어갈수없다고

판단하여 while문을 빠져나왔습니다. ( 이역할을 keyflag가 해줍니다.)

무엇이 문제일까요


djm03178   5년 전

우선 CheckRange 함수의 범위가 이상합니다. 좌표는 세로 1에서 h, 가로 1에서 w까지만 존재하는데 왜 0과 h+1, 0과 w+1을 각각 허용하고 있나요?

그리고 열쇠를 가지고 있다고 해서 해당 문에 반드시 도달할 수 있는 건 아닙니다. 밖에서부터 안으로 들어오는 경로가 있어야 합니다.

minjae200   5년 전

감사합니다 밖에서 안으로 들어오는 경로를 체크안하고 그냥 문의 위치부터 BFS를 써서 생기는 문제였네요

checkRange는 이렇게 생각했습니다. 어느지점에서 시작할지 애매해서

세로 1~h 가로 1~w까지 입력받고

그 테두리도 '.'로 설정하여

BFS를 시도하는식으로 했습니다.

! ! ! ! ! !
!* * * * !
!* $ A *!
!* * * * !
! ! ! ! ! !  -> 이런식으로

두번째로 언급하신 문제때문이였습니다. 감사합니다.

minjae200   5년 전

map을 입력받을때 door를 push하는게 아니라

BFS에서 'A'~'Z' 만날때 door에 push하였고

'a'~'z' 열쇠 얻는 부분에서 큐에 좌표를 push안해줬었네요

AC받았습니다. 도움 감사합니다.

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