testoog   4년 전

시간초과 에러가 납니다..

Arrays.asList().contains()를 써서 그런가 해서 33번째 줄을

int mInteger = Integer.parseInt(stringTokenizer.nextToken());

for(int n : nArray){

     if(n==mInteger){

          bufferedWriter.write("1\n");

          rCount++; break;

     }

}

if(rCount-1!=m){

     bufferedWriter.write("0\n");

     rCount++;

}

이런 식으로 바꿔봤는데 그래도 시간초과 에러가 나네요.. 어디가 문제인걸까요ㅠㅠ

djm03178   4년 전

둘은 근본적으로 차이가 없습니다. 선형 시간에 찾지 않게 해야 합니다.

qahira   4년 전

두 코드 모두 단순히 선형탐색을 하고있습니다만, 본 문제는 


단순히 선형탐색을 하는 문제가 아니기 때문에 안풀리는 것입니다.

데이터 N개가 있으면, N을 모두 찾아봐야하기 때문에 테스트케이스처럼 작은 경우엔 풀렸을지 모르겠지만,

최악의 경우, 즉 N과 M이 각각 100,000 인 경우엔 M*N = 10,000,000,000 이므로 시간내에 절대 찾을 수 없습니다.

이진탐색을 참고해 보세요.

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