구현하신 방법은 경로를 처음부터 따라가면서 현재 칸이 (r,c) 인지를 확인하는 것 같은데요.
잘 생각해 보면 (r,c)가 몇 번째 사분면에 위치하는 지를 알 수 있고, 각 사분면에 포함된 칸 수는 (2n-1)2=22n-2 인 것을 알고 있기 때문에 경로를 다 만들 필요가 없습니다.
1074번 - Z
먼저 제가 알지 못했던 부분에 대해 도움을 주셔서 감사합니다.
기존의 소스에서 약 1/3 ms 정도 단축시킬 수 있었습니다.
http://boj.kr/c88379f9d8e945ea...
혹시 여기서도 더 시간을 줄일 수 있는 부분이 존재하는지 재질문드려도 될까요?
아.. 기저조건 자체가 매우 잘못됐네요...
기존 소스에서 djm03178님의 답변을 통해 isRange함수의 역할을 해당 사분면 범위내의 (y, x)가 속해있는가?로 다시 한번 스스로 정의를 해봤습니다.
속해있다면 다시 탐색하고, 속해있지 않다면 마치 탐색한 것 처럼 사이즈의 제곱을 answer에 더해주었습니다.
그래서 (y,x)가 (r,c)가 됐을 때 종료하는 것을 기저조건으로 변경했고, 시간적으로 매우 개선됐음을 확인했습니다.
이렇게 적고보니 jyon님의 말씀대로 다시 적게 됐네요...
답변을 달아주신 두 분께 정말 감사의 말씀드립니다!
댓글을 작성하려면 로그인해야 합니다.
mrseos 3년 전
안녕하세요. 분할정복으로 문제를 풀었는데 수행시간이 너무 오래걸려 글을 쓰게 됐습니다.
JAVA 1등의 경우 68ms와 비교해보니 약 38배정도 차이가 나는 것 같습니다.
혹시 어떤 부분을 손을 봐야 시간을 줄일 수 있을까요?
읽어주셔서 감사합니다.
http://boj.kr/3ebd6978fcdb4b19...