ljh9032a   3년 전

런타임 에러 뜨는거 답변 부탁드리겠습니다.

Dfs로 중복 제거를 위해 dp에 저장 한 것을 구현하였는데 런타임 에러가 뜨네요.. 

이해가 안되는데 설명 좀 부탁드리겠습니다!!

enochjung   3년 전

if(map[y][x] < map[ty][tx] && inRange(ty, tx) && dp[y][x] < cnt + 1)

dfs 함수에서 범위확인 함수를 나중에 실행했네요

ljh9032a   3년 전

고쳤는데 시간초과가 나네요..ㅎㅎ

혹시 inRange 함수를 if(inRange(ty, tx) && map[y][x] < map[ty][tx]  && dp[y][x] < cnt + 1) 이렇게 고쳤는데

위에것이랑 무슨 큰 차이가 있는건가요??

enochjung   3년 전

n=500이면 가끔가다 ty나 tx가 501이 되는데요


if(map[y][x] < map[ty][tx] && inRange(ty, tx) ... 이면

map[ty][tx]에서 map[501][...]라는 선언하지 않은 곳을 참조해서 런타임에러가 뜨고요


if(inRange(ty, tx) && map[y][x] < map[ty][tx] ... 의 경우에는

inRange(ty, tx)가 거짓이 되어, 뒤의 밑줄 친 부분을 검사하지도 않고 조건문을 탈출하기 때문에 map[501][...] 부분에 접근하지 않게 됩니당


ljh9032a   3년 전

정말 감사합니다 ..ㅎㅎ 

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