문제 출처
https://www.acmicpc.net/problem/11728
접근 방식 및 풀이
- 분할 정복에서 이미 분할된 배열을 합치는 과정을 한다고 생각하면 된다.
- 배열에 담아 순서대로 정렬한다.
- 두배열의 원소를 서로 비교하여 작은것을 새로운 배열에 하나씩 담는다.
- 어느 한쪽이 남은 것은 새로운 배열에 모두 담는다. (순서를 보장하기 때문에 그대로 담아준다.)
소스 코드
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int asize = sc.nextInt();
int bsize = sc.nextInt();
int[] arra = new int[asize];
int[] arrb = new int[bsize];
int[] resultarr = new int[asize+bsize];
for (int i = 0; i <asize ; i++) {
arra[i] = sc.nextInt();
}
Arrays.sort(arra);
for (int i = 0; i <bsize ; i++) {
arrb[i] = sc.nextInt();
}
Arrays.sort(arrb);
int i = 0;
int j = 0;
int k = 0;
while (i< asize && j< bsize){
if(arra[i] > arrb[j]){
resultarr[k++]= arrb[j++];
}else{
resultarr[k++]= arra[i++];
}
}
while(j<bsize){
resultarr[k++] = arrb[j++];
}
while(i<asize){
resultarr[k++] = arra[i++];
}
StringBuilder sb = new StringBuilder();
for (int p = 0; p <resultarr.length ; p++) {
sb.append(resultarr[p] + " ");
}
System.out.println(sb.toString());
}
}
결과
'Competition > Baekjoon' 카테고리의 다른 글
[백준] 11729번 하노이의 탑 (0) | 2020.04.03 |
---|---|
[백준] 1992번 자바 쿼드트리 (0) | 2020.04.01 |
[백준] 2447번 자바 별찍기 (2) | 2020.03.31 |