[백준] 11728번. 배열 합치기

연성·2020년 10월 24일
0

코딩테스트

목록 보기
112/261

[백준] 11728번. 배열 합치기

1. 문제

정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.

2. 입력

첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)

둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.

3. 출력

첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.

4. 풀이

  • 입력 받은 수를 배열 하나에 다 집어넣고 정렬하고 출력했다.
    다른 사람들 질문 올린 거 보니까 막 merge하고 그러던데 그냥 이렇게 풀었다.

5. 처음 코드와 달라진 점

  • 풀이 방법이 여러 개 생각 났는데 그 중 하나는 배열 a와 배열 b가 이미 정렬된 상태기 때문에 가장 앞 숫자를 서로 비교하면서 작은 숫자를 꺼내서 넣는 방법이다.
  • 근데 그냥 해도 될 것 같아서 했는데 됐다.
  • 배열 a, 배열 b를 따로 입력 받아서 합친 다음에 정렬하려고 했는데 생각해보니 한 배열에 다 입력 받아서 정렬하면 될 것 같아서 조금 적다가 수정했다.

6. 코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

int main() {
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);
	
	int n, m;
	cin >> n >> m;

	vector<int> arr(n+m);
	for (int i = 0; i < n; i++){
		cin >> arr[i];
	}

	for (int i = 0; i < m; i++) {
		cin >> arr[n+i];
	}
	
	sort(arr.begin(), arr.end());

	for (int i = 0; i < m + n; i++) {
		cout << arr[i] << " ";
	}

}

0개의 댓글