pmch0325   4년 전

안녕하세요

이진탐색으로 시간을 줄이고 lower bound와 upper bound로 중복 개수를 찾아주는게 이 문제의 포인트인것 같은데

개념은 대충 알지만 배운것이 없어서 그냥 무식하게 코드로 짰어요. 시간초과가 자꾸 뜨길래 혹시나 해서 중복 개수 찾을때도 이진탐색을 적용했구요.


아래 코드는 정답이라고 뜬 코드인데

아래 코드에서 배열을 선언할 때 입력을 받아 크기를 동적으로 할당했어요.

근데 원래는 동적으로 하지않고 문제에서 제시된 최대크기로 (배열A,B,C,D는 4000, 배열E,F는 4000^2인 16000000) 선언을 했는데 자꾸 시간초과가 되더라구요.

왜 선언해주는것 때문에 다른 에러도 아니고 시간초과가 되었던건지 모르겠습니다. 메모리를 할당해주는데도 시간이 많이 걸리나요?

애초에 문제에서 제시된 크기만큼 잡아준건데 이상이 생기면 안되는것 아닌가요? 아니면 코드가 뭔가 이상한건가요...

좀 지저분하게 짜서 코드에 빈틈이 있는건지 제가 이진탐색을 잘못 이해하고 있는건지 답은 맞았지만 개운하지가 않네요ㅠㅠ

sait2000   4년 전

틀린 코드를 올려주셔야 그 코드에 대한 답을 드릴 수 있습니다. 안 보고 알 순 없으니까요

sait2000   4년 전

다만 제 생각에는 1940ms이 나오는 코드가 살짝 어딘가가 빠른 거 아닐까 싶네요 컴파일러가 하는 최적화라던가 여러가지 요인이 많아서 그게 그거인 코드인데 2초를 살짝 넘어버린 거 아닐까요

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