강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

조준희님의 프로필 이미지
조준희

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

40. 교집합 (투포인터 알고리즘 : MS인터뷰 제한시간 1초)

C++를 사용하지 않고 문제를 해결하고싶습니다.

작성

·

194

0

문제에서 sort함수를 이용하여 정렬을 해주는데

만약 C++ 함수들을 사용하지 않고 C로만 문제를 해결하려고 하는데 방법이 있을까요?

#include<stdio.h>

#include<math.h>

#include <stdlib.h> 

#define MAX(x, y) x > y ? x : y

int main(void)

{

int s,n,m,a,i,j,pos=0;

scanf("%d",&n);

int *arr=(int*)malloc(sizeof(int)*n);

for(i=0;i<n;i++)

{

scanf("%d",&arr[i]);

}

scanf("%d",&m);

int *brr=(int*)malloc(sizeof(int)*m);

for(i=0;i<m;i++)

{

scanf("%d",&brr[i]);

}

int *sum=(int*)malloc(sizeof(int)*MAX(n,m));

int left=0,right=0;

while(left<n && right<m)

{

if(arr[left]==brr[right])

{

sum[pos++]=arr[left++];

right++;

}

else if(arr[left]<brr[right])

{

left++;

}

else if(arr[left]>brr[right])

{

right++;

}

}

for(i=0;i<pos;i++)

{

printf("%d ",sum[i]);

}

free(arr);

free(brr);

free(sum);

return 0;

}

저는 이 부분에서 정렬을 하지못하여 막혀있습니다.

퀴즈

57%나 틀려요. 한번 도전해보세요!

선택 정렬(Selection Sort) 알고리즘은 각 단계에서 어떤 작업을 수행하여 배열을 정렬하나요?

인접한 두 요소를 비교하여 필요시 교환합니다.

정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 찾아 정렬된 부분의 올바른 위치로 옮깁니다.

현재 요소를 이미 정렬된 부분 배열의 적절한 위치에 삽입합니다.

배열을 분할하고 각 부분을 재귀적으로 정렬한 후 병합합니다.

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

이 문제에서 two pointers 알고리즘을 사용하려면 기본적으로 자료가 정렬이 되어야 합니다.

조준희님의 프로필 이미지
조준희

작성한 질문수

질문하기