본문 바로가기
백준/정렬

백준 11728 c++ "배열 합치기" -PlusUltraCode-

by PlusUltraCode 2025. 9. 16.

https://www.acmicpc.net/problem/11728

[필자 사고]

단순히 배열에 값을 넣어서 정렬함수를 사용하면 쉽게 문제를 해결할 수 있다.

 

아래는 자세한 코드 해설이다.

[코드 해설]

Input 함수

  • 역할: 두 배열을 입력받아 arr3에 합치고, 정렬까지 수행합니다.
  1. cin >> N >> M;
    • 첫 번째 배열의 크기 N, 두 번째 배열의 크기 M을 입력받습니다.
  2. 배열 초기화
    • arr1은 크기 N으로 0으로 초기화
    • arr2는 크기 M으로 0으로 초기화
    • arr3는 크기 N+M으로 0으로 초기화 (임시 공간 확보)
  3. 첫 번째 배열 입력
    • 반복문을 돌며 arr1[i]에 N개의 정수를 입력받습니다.
  4. 배열 합치기
    • arr3 = arr1;
      • arr3에 먼저 arr1 전체를 복사합니다.
    • 이후 두 번째 배열 입력 시, 하나씩 값을 읽어 arr3.push_back(num);으로 추가합니다.
    • 결과적으로 arr3에는 N+M개의 원소가 들어갑니다.
  5. 정렬
    • sort(arr3.begin(), arr3.end());
    • 합쳐진 배열 arr3를 오름차순으로 정렬합니다.

main 함수

  1. Input() 호출
    • 두 배열을 입력받고, 합쳐서 정렬까지 마칩니다.
  2. 출력
    • for (int i = 0; i < arr3.size(); i++) 반복문으로 arr3의 모든 원소를 출력합니다.
    • 각 원소는 공백으로 구분됩니다.

[소스 코드]

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int N, M;
vector<int> arr1;
vector<int> arr2;
vector<int> arr3;
void Input() {
	cin >> N >> M;
	arr1.assign(N,0);
	arr2.assign(M, 0);
	arr3.assign(N + M, 0);
	for (int i = 0; i < N; i++) {
		cin >> arr1[i];
	}

	arr3 = arr1;
	for (int i = 0; i < M; i++) {
		int num;
		cin >> num;
		arr3.push_back(num);
	}


	sort(arr3.begin(), arr3.end());
}

int main(void) {
	Input();
	for (int i = 0; i < arr3.size(); i++) {
		cout << arr3[i] << " ";
	}
}