10816번 - 숫자 카드 2
정렬 직접 다 하고 이진탐색을 한 후 수가 있다면
근처 index 서칭하면서 수를 찾는 식으로 구현했습니다.
시간 초과가 걸릴만한 부분은 counting 함수에서 같은 수를 찾는게 아닐까 합니다.
이것도 worst case의 경우 O(N)이라고 생각하는데
여기서 시간초과가 뜨는게 맞다면
이진탐색으로 풀 경우 저 방법외에 시간을 줄일 수 있는 방법이 있을까요?.....
lower_bound와 upper_bound로 푸는 문제였던 거 같네요
이진 탐색과 비슷하게 구현할 수 있으니 한 번 찾아보세요
한번 카운팅한 숫자는 memoization해둬서 다시 카운팅하지 않도록 해야할것 같아요.
map을 사용하면 될것 같은데, 근데 그렇게되면 binary search하지 않고 map만 사용해도 풀린다는건 안비밀입니다.
이진탐색 이후에 저렇게 카운팅하는 과정이 추가된다고 해도 O(N) 추가니까 크게 상관 없을 것 같았는데 한번 카운팅 했던게 worst case로 여러번 들어오면 문제가 되긴 하겠네요...
upper_bound lower_bound 랑 map 을 아직 몰라서 이진탐색으로 도전해봤는데 찾아서 공부해봐야겠군요! 감사합니다
댓글을 작성하려면 로그인해야 합니다.
sc3289 2년 전
정렬 직접 다 하고 이진탐색을 한 후 수가 있다면
근처 index 서칭하면서 수를 찾는 식으로 구현했습니다.
시간 초과가 걸릴만한 부분은 counting 함수에서 같은 수를 찾는게 아닐까 합니다.
이것도 worst case의 경우 O(N)이라고 생각하는데
여기서 시간초과가 뜨는게 맞다면
이진탐색으로 풀 경우 저 방법외에 시간을 줄일 수 있는 방법이 있을까요?.....