7453번 - 합이 0인 네 정수
이분탐색의 lower bound, upper bound를 구하는 코드를 작성했고, 파이썬의 bisect 라이브러리를 사용했습니다.
불필요한 이분탐색을 줄일수 있도록, lower bound를 구한 뒤 그 인덱스에 해당하는 배열 데이터와 target 데이터가 같지 않다면 upper bound를 구하는 이분탐색을 건너뛰는 방식으로 설계했습니다.
또한, product 함수의 실행 시간이 2중 for문에 비해 느리게 실행될 수 있다고 생각되어, 두개의 합 배열을 만드는 과정에서 2중 for문을 활용해봐도 시간초과는 똑같습니다.
어떻게하면 코드를 더 최적화할 수 있을까요??
추가1) pypy3로 제출해도 똑같이 시간초과가 뜹니다 ㅠㅠ
추가2) 단순한 이분탐색이 아닌, 딕셔너리를 같이 활용한 풀이로 해결했습니다.
c++ lower_bound와 upper_bound를 이용한 솔루션으로 11초가 소요되었으니 파이썬은 어림도 없을 것 같습니다.
파이썬으로는 맞은 분이 아예 없습니다... pypy로 제출해보세요
pypy3로 제출해도 똑같이 시간초과입니다 ㅠㅠ
댓글을 작성하려면 로그인해야 합니다.
kbpark9898 3년 전
이분탐색의 lower bound, upper bound를 구하는 코드를 작성했고, 파이썬의 bisect 라이브러리를 사용했습니다.
불필요한 이분탐색을 줄일수 있도록, lower bound를 구한 뒤 그 인덱스에 해당하는 배열 데이터와 target 데이터가 같지 않다면 upper bound를 구하는 이분탐색을 건너뛰는 방식으로 설계했습니다.
또한, product 함수의 실행 시간이 2중 for문에 비해 느리게 실행될 수 있다고 생각되어, 두개의 합 배열을 만드는 과정에서 2중 for문을 활용해봐도 시간초과는 똑같습니다.
어떻게하면 코드를 더 최적화할 수 있을까요??
추가1) pypy3로 제출해도 똑같이 시간초과가 뜹니다 ㅠㅠ
추가2) 단순한 이분탐색이 아닌, 딕셔너리를 같이 활용한 풀이로 해결했습니다.