artage7   2년 전

질문게시판 예제 다 해봤는데 다 똑같이 나오고

디버깅하면서 움직이는거 체크하면서 까지 다해봤는데.... 1%는 커녕 그냥 틀렸다는데...

너무 ㅂㄷㅂㄷ 한 탓인지 어디서 틀린지 감이 안옵니다...

오답은 항상 가까이 있던데 뭐때문일까요 ㅠㅠ...

푸시면서 이거 때문에 오답이었다 라는 케이스 있으셨나요...?


알고리즘은 이렇습니다..

덱을 선언해서  사과를 먹으면 앞대가리에 머리 추가해주고 visited에 1을 설정하여서 몸통을 만들어 주었습니다 ( 몸통 충돌 체크용 visited배열)

사과를 안먹으면 꼬리 때다가 앞대가리에 추가해주고 꼬리 visited 초기화하고 앞대가리 visited 1해주고

맵 밖으로 가거나 다음 움직일 장소가 vistied와 겹치면( 몸끼리 부딪치면) break;...


루프 수 만큼 타임 계산해서 출력....


zerg1355   2년 전

이 문제오류가 좀 있어서 수정필요해요 그리고 너무 설명이 안되있네요 딴거 푸시길

artage7   2년 전

자문 자답...

if( temp.dir + gameInfo[gameTime-1] == r)을

if( (temp.dir + gameInfo[gameTime-1])%4 == r)

이렇게 해줘야 하는데 왜인지 모르겠지만 저쪽에서만 빠졌네요...

저는 다 %4로 나눠줬다고 뇌피셜때리고  테스트 케이스가 간단한 경우라

모두 우연으로 통과한거였네요... ㅂㄷㅂㄷ;



if( temp.dir + gameInfo[gameTime-1] == r)
  {
   nextSnake.dir = r;
   nextSnake.x = temp.x;
   nextSnake.y = temp.y+1;
  }
  else if( (temp.dir + gameInfo[gameTime-1])%4 == d)
  {
   nextSnake.dir = d;
   nextSnake.x = temp.x+1;
   nextSnake.y = temp.y;
  }

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