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

[필자 사고]
단순히 배열에 값을 넣어서 정렬함수를 사용하면 쉽게 문제를 해결할 수 있다.
아래는 자세한 코드 해설이다.
[코드 해설]
Input 함수
- 역할: 두 배열을 입력받아 arr3에 합치고, 정렬까지 수행합니다.
- cin >> N >> M;
- 첫 번째 배열의 크기 N, 두 번째 배열의 크기 M을 입력받습니다.
- 배열 초기화
- arr1은 크기 N으로 0으로 초기화
- arr2는 크기 M으로 0으로 초기화
- arr3는 크기 N+M으로 0으로 초기화 (임시 공간 확보)
- 첫 번째 배열 입력
- 반복문을 돌며 arr1[i]에 N개의 정수를 입력받습니다.
- 배열 합치기
- arr3 = arr1;
- arr3에 먼저 arr1 전체를 복사합니다.
- 이후 두 번째 배열 입력 시, 하나씩 값을 읽어 arr3.push_back(num);으로 추가합니다.
- 결과적으로 arr3에는 N+M개의 원소가 들어갑니다.
- arr3 = arr1;
- 정렬
- sort(arr3.begin(), arr3.end());
- 합쳐진 배열 arr3를 오름차순으로 정렬합니다.
main 함수
- Input() 호출
- 두 배열을 입력받고, 합쳐서 정렬까지 마칩니다.
- 출력
- 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] << " ";
}
}'백준 > 정렬' 카테고리의 다른 글
| 백준 2217 c++ "로프" -PlusUltraCode- (0) | 2025.09.17 |
|---|---|
| 백준 1026 c++ "보물" -PlusUltraCode- (0) | 2025.09.17 |
| 백준 11004 c++ "K번째 수" -PlusUltraCode- (0) | 2025.09.16 |
| 백준 12015 c++ "가장 긴 증가하는 부분 수열 2" -PlusUltraCode- (0) | 2024.12.26 |
| 백준 1202 C++ "보석 도둑" -PlusUltraCode- (1) | 2024.11.14 |