정렬을 사용하지 마시고
입력으로 주어지는 두 배열이 이미 정렬되어있다는 사실을 이용해서
선형시간에 해결하는 방법을 생각해보세요..
11728번 - 배열 합치기
전 std::sort 한번 쓰고 그냥 ac받았네요... 800미리 이상 걸리긴 했지만..
#include <stdio.h>
long long int a[1000001]={0,};
long long int b[1000001]={0,};
long long int ab[2000002]={0,};
int main()
{
int n;
int m;
int i,j,k = 0;
scanf("%d %d",&n,&m);
for(i = 0 ; i < n ; i++ ){ scanf("%lld",&a[i]);}
for(j = 0 ; j < m ; j++ ){ scanf("%lld",&b[j]);}
for(i = 0,j = 0 ; i < n+m , j < n+m ; i ++, j++,k++)
{
if(a[i] == 0 && b[j] == 0) { break;}
else if(a[i] == 0 && b[j] != 0)
{
ab[k] = b[j];
i--;
}
else if(a[i] != 0 && b[j] == 0)
{
ab[k] = a[i];
j--;
}
else if(a[i] <= b[j])
{
ab[k] = a[i];
j--;
}
else if(a[i] > b[j])
{
ab[k] = b[j];
i--;
}
}
for(i = 0 ; i < n+m ; i++ ){ printf("%lld ",ab[i]); }
}
55%에서 틀렸습니다 뜨네요..
정렬되어있으니 서로 하나씩 보면서 그냥 하나올려주고 하는 방식이었는데 이마저 틀린건가요..
댓글을 작성하려면 로그인해야 합니다.
kkw564 8년 전
정렬된 배열이라는 것을 생각하여 다시 Mergesort를 이용햇는데도 안되네요.. 어디가 실수일까요..