작성
·
307
0
안녕하세요 큰돌 선생님! 궁금한게 있어 문의 드립니다.
https://www.acmicpc.net/source/56686984
선생님 코드와 같게 작성했지만 visited 배열의 turn 부분을 다르게 작성했습니다.
선생님의 코드는 아래와 같고요
visited[turn%2][nx]= visited[(turn+1)%2][x]+1;
제가 작성한 코드는 아래와 같습니다.
visited[(turn+1)%2][nx]= visited[turn%2][x]+1;
현재 시간의 위치는 x이고, nx로 갈때의 시간은 +1 증가할 것이므로 이렇게 작성했는데 왜 메모리 초과가 났는지 알 수 있을까요?
항상 좋은 답변 감사드립니다!
답변 1
0
안녕하세요 77님 ㅎㅎ
이코드요.
if(nx<0||nx>MAX||visited[(turn + 1)%2][nx]) continue;
visited[(turn+1)%2][nx]= visited[turn%2][x]+1;
앞의 코드처럼 되어야 하지 않을까요?
우리가 visited[nx]를 체크하고 ~~ visited[nx] = 1 이런 값을 넣듯이요.
나머지 부분들은 다 좋은 거 같아요. 잘 짜셨습니다.
P.S 메모리 초과는 아마 그 부분 때문에 UB가 떠서 그런 거 같아요. UB는 unexpeted behavior인데 틀린 로직이 있다면 메모리 초과, 시간초과 등이 뜰 수 있는 것들을 말합니다.
감사합니다.