pms940725   3년 전

최대 중첩이라고 해봐야 2중 포문정도이고, vector 삭제하는데 시간 많이 잡아먹는거같아서 없애고 하는데도 시간초과가 뜨네요 ㅠㅜ

자료구조를 다른걸 써야 하는건가요.. 아니면 쓸데없는게 많이 들어간걸까요..?

ygj02054   3년 전

저도 처음에 이런방식으로 풀었다가 시간초과 떴는데.. struct에는 위치를 저장하지 않고, map[][][] 3차원벡터로 map[r][c].push_back(FIREBALL{m,s,d}) 이런 방식으로 풀어보세요! 이 방식으로 바꾸니까 16ms 뜨네요

pms940725   3년 전

댓글 감사합니다. 질문 하나만 더드려도 될까요.

그렇다면 fireball을 move할 때 map[][]을 순회하는 방식으로 접근하는 건가요??

tkstka0023   3년 전

확실하진 않지만 92번째 줄에 

vector list = map[y][x]; 

하는 부분에서 벡터 복사가 이뤄져서 시간을 잡아먹는게 아닐까 싶습니다.

vector& list = map[y][x];   이렇게 참조 형태로 바꿔보세요.

그리고 d_vec를 check_dir 한테 던져줄 때도 마찬가지로 벡터 복사가 발생하는것 같네요.

82번째 줄에 checkDir 함수의 매개변수를  vector& list로 바꿔보세요.

ygj02054   3년 전

그렇다면 fireball을 move할 때 map[][]을 순회하는 방식으로 접근하는 건가요??

--> 네 맞습니다.

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