🙇‍♀️두 배열 합치기

오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요.

▣ 입력설명
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.

두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다. 

세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.

네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다. 

각 배열의 원소는 int형 변수의 크기를 넘지 않습니다.

▣ 출력설명
오름차순으로 정렬된 배열을 출력합니다.

▣ 입력예제 1 
3
1 3 5
5
2 3 6 7 9

▣ 출력예제 1
1 2 3 3 5 6 7 9

🚀풀이

문제의 조건대로 두 개의 벡터를 받아주고, 합칠 벡터를 만들었다.
합칠 때, 한쪽이 다 집어 넣게 되면 남은 한 쪽을 끝까지 넣어줘야한다.
정답 벡터의 위치는 cur이라는 변수로 관리하였다.

vector<int> seq1;
vector<int> seq2;

void solve()
{
	int N, M;
	cin >> N;

	seq1 = vector<int>(N);
	for (int i = 0; i < N; ++i)
	{
		cin >> seq1[i];
	}

	cin >> M;
	seq2 = vector<int>(M);
	for (int i = 0; i < M; ++i)
	{
		cin >> seq2[i];
	}

	int pos1 = 0, pos2 = 0, cur = 0;
	vector<int> res(N + M);
	for (int i = 0; i < N + M; ++i)
	{
		if (pos1 == N)
			break;
		if (pos2 == M)
			break;

		if (seq1[pos1] < seq2[pos2])
		{
			res[i] = seq1[pos1];
			pos1++;
		}
		else
		{
			res[i] = seq2[pos2];
			pos2++;
		}

		cur++;
	}

	if (pos1 != N)
	{
		while (pos1 < N)
		{
			res[cur] = seq1[pos1];
			pos1++;
			cur++;
		}
	}
	else
	{
		while (pos2 < M)
		{
			res[cur] = seq2[pos2];
			pos2++;
			cur++;
		}
	}

	for (int i = 0; i < N + M; ++i)
		cout << res[i] << " ";
}

🚀전체 코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<int> seq1;
vector<int> seq2;

void solve()
{
	int N, M;
	cin >> N;

	seq1 = vector<int>(N);
	for (int i = 0; i < N; ++i)
	{
		cin >> seq1[i];
	}

	cin >> M;
	seq2 = vector<int>(M);
	for (int i = 0; i < M; ++i)
	{
		cin >> seq2[i];
	}

	int pos1 = 0, pos2 = 0, cur = 0;
	vector<int> res(N + M);
	for (int i = 0; i < N + M; ++i)
	{
		if (pos1 == N)
			break;
		if (pos2 == M)
			break;

		if (seq1[pos1] < seq2[pos2])
		{
			res[i] = seq1[pos1];
			pos1++;
		}
		else
		{
			res[i] = seq2[pos2];
			pos2++;
		}

		cur++;
	}

	if (pos1 != N)
	{
		while (pos1 < N)
		{
			res[cur] = seq1[pos1];
			pos1++;
			cur++;
		}
	}
	else
	{
		while (pos2 < M)
		{
			res[cur] = seq2[pos2];
			pos2++;
			cur++;
		}
	}

	for (int i = 0; i < N + M; ++i)
		cout << res[i] << " ";
}

int main() 
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	solve();

	return 0;
}