creativa   3년 전

1. pair<int,int>SHARK[][]로 SharkNumber, Left Fragment를 각 배열에 저장하였습니다.

2. int head[]는 shark가 위치함을 나타내기 위해 사용했습니다.

3. chageDir[shark번호][방향][우선순위]을 사용하여 상하좌우를 우선순위대로 순회하도록 하였습니다.

4. while문에서 time을 증가시키며 Shark의 개수(마리)가 1이 될 때 답을 출력하도록 하였습니다.

5. head array를 통해 shark의 현재위치를 옮길 수 있도록 참고하고, Shark[nx][ny].first(SharkNumber의 next index)를 참고하여 빈칸이 있을 때와 없을 때 두번 상하좌우 순회를 하였습니다.

6. head array를 먼저 이동 시킴으로써 서로 만날 수 있는 경우를 고려하였습니다. head[nx][ny]에 먼저 와있던 Shark가 있다면, Shark의 번호를 고려하여 바뀔 수 있도록 하였고, M(상어의 개수)을 감소시켰습니다.

7. time에 따라 Fragment를 감소시켰습니다.

예제는 모두 맞았지만, 야속하게도 '틀렸습니다'만 반복이 됩니다. 혹시 문제를 푸셨거나 오류가 바로 보이신다면 첨언 부탁드립니다.

미리 감사합니다.

creativa   3년 전

해결했습니다.

99번줄의 에러가 있었네요. 

head[nx][ny]가 변경되지 않을 경우에도 head[nx][ny]의 curDir를 변경하여 인접했을 경우에 에러가 발생했네요.

기쁘다.

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