오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요.
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.
두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.
네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.
각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.
오름차순으로 정렬된 배열을 출력합니다.
3
1 3 5
5
2 3 6 7 9
1 2 3 3 5 6 7 9
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public ArrayList<Integer> solution(int n, int m, int[] array1, int[] array2) {
ArrayList<Integer> answer = new ArrayList<>();
int pos1=0, pos2=0;
// array1, array2 중 한 쪽이라도 배열의 크기 범위를 넘으면 종료
// 종료 안하면 ArrayIndexOutOfBoundsException 문제 발생
while (pos1<n && pos2<m) {
if (array1[pos1] > array2[pos2]) {
answer.add(array2[pos2]);
pos2++;
} else if (array1[pos1] < array2[pos2]) {
answer.add(array1[pos1]);
pos1++;
} else {
answer.add(array1[pos1]);
answer.add(array2[pos2]);
pos1++;
pos2++;
}
}
// array1의 원소가 남아있음 -> 남은 원소들 뽑아내기
while (pos1<n) {
answer.add(array1[pos1]);
pos1++;
}
// array2의 원소가 남아있음 -> 남은 원소들 뽑아내기
while (pos2<m) {
answer.add(array2[pos2]);
pos2++;
}
return answer;
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int[] array1;
int[] array2;
int N = Integer.parseInt(br.readLine());
array1 = new int[N];
st = new StringTokenizer(br.readLine());
for (int i=0; st.hasMoreTokens(); i++) {
array1[i] = Integer.parseInt(st.nextToken());
}
int M = Integer.parseInt(br.readLine());
array2 = new int[M];
st = new StringTokenizer(br.readLine());
for (int i=0; st.hasMoreTokens(); i++) {
array2[i] = Integer.parseInt(st.nextToken());
}
for (int i : T.solution(N, M, array1, array2)) {
System.out.print(i + " ");
}
}
}
// for (int i=0; i<array1.length+array2.length; i++) {
// if (array1.length > pos1) {
// answer.add(array2[pos2]);
// pos2++;
// }
// if (array2.length > pos2) {
// answer.add(array1[pos1]);
// pos1++;
// }
//
// if (array1[pos1] > array2[pos2]) {
// answer.add(array2[pos2]);
// pos2++;
// } else if (array1[pos1] < array2[pos2]) {
// answer.add(array1[pos1]);
// pos1++;
// } else {
// answer.add(array1[pos1]);
// answer.add(array2[pos2]);
// pos1++;
// pos2++;
// }
// }