nahwasa   2년 전

1. 높이순서로 정렬 : order[]

2. h-d가 0 미만일 경우 계산해볼 이유가 없으므로, h-d가 0이상일때에 대해 높은 높이부터 빼내서 bfs 돌림.

3. 이 때, h-d 초과인 높이에 대해서만 bfs를 돌림. 돌리다가 이미 방문했던 곳 (visited[][] == true)을 만나면 거긴 정상이 아님.

    curVisited랑 visited로 분리해둔 이유는, curVisited가 false이고 visited가 true라면 그 이전 order에서 방문한 곳이란걸 판단하기 위해서 입니다.

---

그럼 예상으로는 어쨌든 bfs 최대로 돌아도 500x500번 돌테니 대충 '2'의 경우에 해당하지 않는 최악의 경우라도 bfs는 최대 25만번이고, tc가 100번이고 하니 대강 시간내에 될 것 같았는데.. 시간초과가 납니다.

혹시 시간을 더 줄일 만한 힌트좀 부탁드려도 될까요?

nahwasa   2년 전

로직적으론 더이상 생각이 안나서.. 한땀한땀 시간을 깎아서 겨우 턱걸이로 통과했네요 ㅠㅠ

이제 다른 고수분들 코드보고 어케하셨나좀 봐야할덧

nahwasa   2년 전

는 시간도 해결함. 편-안

로직상 문제보다는 세세하게 뭘 쓰냐에 따라 시간이 갈렸었군요.

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