인프런 커뮤니티 질문&답변

goqlwj77님의 프로필 이미지
goqlwj77

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

3-I

17071번 메모리 초과

작성

·

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인데 틀린 로직이 있다면 메모리 초과, 시간초과 등이 뜰 수 있는 것들을 말합니다.

 

감사합니다.

 

goqlwj77님의 프로필 이미지
goqlwj77

작성한 질문수

질문하기