19237번 - 어른 상어
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를 감소시켰습니다.
예제는 모두 맞았지만, 야속하게도 '틀렸습니다'만 반복이 됩니다. 혹시 문제를 푸셨거나 오류가 바로 보이신다면 첨언 부탁드립니다.
미리 감사합니다.
해결했습니다.
99번줄의 에러가 있었네요.
head[nx][ny]가 변경되지 않을 경우에도 head[nx][ny]의 curDir를 변경하여 인접했을 경우에 에러가 발생했네요.
기쁘다.
댓글을 작성하려면 로그인해야 합니다.
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를 감소시켰습니다.
예제는 모두 맞았지만, 야속하게도 '틀렸습니다'만 반복이 됩니다. 혹시 문제를 푸셨거나 오류가 바로 보이신다면 첨언 부탁드립니다.
미리 감사합니다.