" 인접한 한 칸 또는 대각선 방향으로 인접한 한 칸으로 이동하거나, 현재 위치에 서 있을 수 있다. 이동할 때는 빈 칸으로만 이동할 수 있다. "
dxdy 에서 현재 위치에 가만히 있는 경우가 빠진 듯 합니다.
16954번 - 움직이는 미로 탈출
" 인접한 한 칸 또는 대각선 방향으로 인접한 한 칸으로 이동하거나, 현재 위치에 서 있을 수 있다. 이동할 때는 빈 칸으로만 이동할 수 있다. "
dxdy 에서 현재 위치에 가만히 있는 경우가 빠진 듯 합니다.
저는 가만히 있는 경우를 표현하기 위해,
on이라는 변수를 두고,
8방향 중 하나라도 움직이면 on+1했습니다.
만약, on이 0이라면 8방향 중 어디에도 못간 경우이므로
다시 원래 위치인 x,y를 넣어줬습니다.
혹시 이렇게 해도 가만히 있는 경우가 구현이 안되는건가요??
우선 on 플래그를 통해서 가만히 있는 상태를 구현하려 하신 점은 보지 못했습니다. 다만, 가만히 있어야 할 때 문제가 생기는 것은 맞는 듯 합니다.
구현하신 코드는 만약 8방향 중 갈 곳이 없다면 가만히 서있게 되는 선택지를 부여하는 것인데,
반대로 8방향 중 갈 수 있는 방향이 하나라도 있다면 가만히 서있는다는 선택지는 주어지지 않게 됩니다.
댓글 다시 읽어보니 어떤 의미인지 이해가 되었습니다.
즉, 모조건 가만히 있는 경우를 생각해야하는데, 처음 구현한 코드대로는 가만히 있는다는 게 구현이 안되었다는 의미였군요.
그래서 다시 고쳤습니다.
현재 x,y좌표의 visited를 False로 고친 다음에,
가만히 있는 걸 받는 걸로 코드를 수정해봤어요.
그런데 흠...
이 방법도 15%에서 걸리네요.
제가 뭔가를 놓친 거 같은데...아직은 잘 모르겠네요
line 55부터 구현하신 벽의 움직임 부분도 오류가 납니다.
nwx 에 이미 벽이 있는 상황. 즉, 벽이 연달아 있는 상황에서 벽이 중복되어 사라집니다.
Input )
........
........
........
........
#.......
#.......
.#......
.#......
위 입력을 가지고 1초 후 벽의 상태를 디버깅으로 확인해보세요
........
........
........
........
........
#.......
#.......
.#......
가 아닌 다른 상태가 만들어집니다.
어떤 건지 인지해서 수정했는데....
하...또 15%에서 막히네요.
진짜 미치겠네요.
반례도 다 맞는데...
결국 그냥 다른 방식으로 풀었네요.
아마 저 방식으로 벽을 움직이면
뭔가가 잘 안되는 것 같네요.
도와주셔서 감사합니다.
while wall:
wx,wy=wall.pop(0)
nwx=wx+1
if nwx>=8:
room[wx][wy]='.'
continue
else:
if [nwx,wy] in man:
p=man.index([nwx,wy])
man.pop(p)
room[nwx][wy]='#'
new_wall.append([nwx,wy])
room[wx][wy]='.'
wall=new_wall
wall.sort()
이미 푸셨겠지만 저도 15프로에서 막혔다가 저기 man.pop(p) 를 해준다음에 man 이 위치하고 있는 좌표에 visited 를 False 로 재설정 해주면 됐습니다!
댓글을 작성하려면 로그인해야 합니다.
crucialzint 1년 전
반례까지 다 찾아서 통과했다!
하고 돌리면 15%에서 죽네요.
하...왜 이럴까요