kkw564   8년 전

정렬된 배열이라는 것을 생각하여 다시  Mergesort를 이용햇는데도 안되네요.. 어디가 실수일까요..

ntopia   8년 전

정렬을 사용하지 마시고

입력으로 주어지는 두 배열이 이미 정렬되어있다는 사실을 이용해서

선형시간에 해결하는 방법을 생각해보세요..

kesakiyo   8년 전

MergeTwoArea를 이용한다면..............

jonghyunee   8년 전

전 std::sort 한번 쓰고 그냥 ac받았네요... 800미리 이상 걸리긴 했지만..

onjo0127   8년 전

힌트를 좀 더 드리자면 배열의 순서를 바꾸려고(정렬) 하지 마시고 출력하는 순서를 바꿔 보세요.

kkw564   8년 전

느낌이 왔습니다! 감사합니다.

kkw564   8년 전

#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%에서 틀렸습니다 뜨네요..

정렬되어있으니 서로 하나씩 보면서 그냥 하나올려주고 하는 방식이었는데 이마저 틀린건가요..

isac322   8년 전

입력의 범위가 정수이기 때문에 0으로 배열의 종료를 판단하면 안될거같네요.

onjo0127   8년 전

예를 들어

5 5

0 0 0 0 0

1 2 3 4 5

를 넣으면

0을 숫자로 인식하지 않고 종료하라는 뜻으로 받아들이기 때문에 ab는 빈 배열이 됩니다.

결국 출력은

0 0 0 0 0 0 0 0 0 0

처럼 비게 됩니다.

kkw564   8년 전

isac332님 혹시 따로 연락할수있는길이있을까요? 학교가같아서요

isac322   8년 전

@kkw564

isac322@naver.com 으로 연락주세요ㅋㅋ

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