본문 바로가기
이론/코딩테스트

[백준] 11728번 배열 합치기 (투포인터 알고리즘)

by 퇴근후개발 2022. 7. 29.
반응형

-문제

-코드

#include<stdio.h>
#include<vector>
using namespace std;

int main()
{
	int n, m, p1=0, p2=0, p3=0;
	scanf("%d %d", &n, &m);


	vector<int> a(n);
	vector<int> b(m);
	vector<int> c(n+m);

	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &b[i]);
	}

	while (p1<n && p2<m)
	{
		if (a[p1] < b[p2])
		{
			c[p3++] = a[p1];
			p1++;
		}
		else if (a[p1] > b[p2])
		{
			c[p3++] = b[p2];
			p2++;
		}
		else
		{
			c[p3++] = a[p1];
			c[p3++] = b[p2];
			p1++;
			p2++;
		}
	}
	
	if (p1 < n)
	{
		for (int i = p1; i < n; i++)
		{
			c[p3++] = a[i];
		}
	}
	else if (p2 < m)
	{
		for (int i = p2; i < m; i++)
		{
			c[p3++] = b[i];
		}

	}
	
	for (int i = 0; i < n + m; i++)
	{
		printf("%d ", c[i]);
	}
	return 0;
}
반응형