
| 접근 방법
말 그대로 두개의 배열을 입력받아 정렬하여 결과를 출력하면 된다. 이 때 정렬하는 방법은 두가지가 있다. 첫번째는 Arrays.sort 메소드를 사용하고 두번째는 두포인터를 사용하는 것이다. 두가지 다 다뤄보겠다.
| 입출력
BufferedReader 를 사용하여 입력값을 받고 System.out.print 를 사용하여 출력했다.
| 1.Arrays.sort 사용하기
import java.util.*;
import java.io.*;
public class CombineArray_11728 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); //첫번째 배열 길이
int m = Integer.parseInt(st.nextToken()); //두번째 배열 길이
int [] arr = new int[n+m]; //정렬할 배열 초기화
st = new StringTokenizer(br.readLine()); //첫번째 배열
for (int i = 0; i < n; i++) {
arr[i]= Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine()); //두번째 배열
for (int i = 0; i < m; i++) {
arr[i+n] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr); //정렬
StringBuilder sb = new StringBuilder();
for(int r : arr) {
sb.append(r+" ");
}
System.out.println(sb);
}
}
| 2.두 포인터 사용하기
- 두개의 배열에 있는 값들을 비교하면서 작은 값들을 먼저 가져오고 포인터를 이동하는 식으로 구현하면 된다.







import java.util.*;
import java.io.*;
public class CombineArray_11728 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int [] a = new int[n];
int [] b = new int[m];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < m; i++) {
b[i] = Integer.parseInt(st.nextToken());
}
int p1 = 0, p2=0;
while(p1<n && p2<m) { //두개의 배열 길이만큼만 탐색해야 하므로
if(a[p1]<= b[p2]) {
sb.append(a[p1++]+" ");
}
else {
sb.append(b[p2++]+" ");
}
}
//두개의 배열 길이가 같지 않은 경우 값을 다 담지 못하는 경우가 발생한다.
//그래서 한 배열의 탐색이 완료한 후에는 다른 배열의 남아있는 값도 넣어주어야 한다.
if(p1==n) {
for (int i = p2; i < m; i++) {
sb.append(b[i]+" ");
}
}
if(p2==m) {
for (int i = p1; i < n; i++) {
sb.append(a[i]+" ");
}
}
System.out.println(sb);
}
}
| 성능 비교

'알고리즘 & 자료구조 > 두포인터' 카테고리의 다른 글
[백준] 13144번 -List of Unique Numbers (JAVA) (0) | 2022.06.02 |
---|