skyeee25   1년 전

이진탐색 쓰라고 해서 이진탐색 썼습니다. 간간히 for 이중 중첩 코드가 생각났지만 꾸욱 참고 이중중첩을 쓰지 않았습니다. 값은 제대로 나옵니다. 선생님들 대체 어떻게 해야 시간을 줄일 수 있을까요?

cksgud410   1년 전

1.

Arrays.sort()을 진행하면 평균 시간복잡도가 O(nlog₂n)입니다.

코드를 읽어보니 Array.sort()를 하는 이유가 최대값을 구하는 것이기 때문에

Array.sort()를 사용하지 않고 입력값만 비교하여 최대값을 구하는 방향으로 진행하면 좋아질 것 같습니다.

2.

이분 탐색은 중간값을 통해서 조건에 만족하는지 확인하여 조건에 만족하는 값을 찾는 알고리즘입니다.

42~53줄의 코드는 중간값을 이용하는 것이 아닌 추가적으로 for문을 진행하는 것으로 시간초과의 원인이 될 것 같습니다.


3. 

42 ~ 53줄 코드는 조건에 만족하는 최대 랜선의 길이를 찾아서 이분탐색을 종료하는 코드로 보입니다.

그럼.. 2.번에서 설명한 코드를 없애개 된다면 다른 방식의 이분 탐색을 종료하는 방법을 고민해서 적용시키면 시간초과가 발생하지 않을 것 같습니다.

skyeee25   1년 전

넵 감사합니다

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