문제
설명
오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요.
입력
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.
두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.
네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.
각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.
출력
오름차순으로 정렬된 배열을 출력합니다.
내 풀이
import java.util.Scanner;
public class Main3_1 {
public int[] Solution(int[] arr1, int[] arr2) {
int len = arr1.length+arr2.length;
int[] answer = new int[len];
System.arraycopy(arr1, 0, answer, 0, arr1.length);
System.arraycopy(arr2, 0, answer, arr1.length, arr2.length);
for (int i = 0; i < len-1; i++) { // 버블정렬
for (int j = i+1; j < len; j++) {
if(answer[i] > answer[j]) {
int tmp = answer[i];
answer[i] = answer[j];
answer[j] = tmp;
}
}
}
return answer;
}
public static void main(String[] args) {
Main3_1 T = new Main3_1();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr1 = new int[n];
for (int i = 0; i < n; i++) {
arr1[i] = sc.nextInt();
}
n = sc.nextInt();
int[] arr2 = new int[n];
for (int i = 0; i < n; i++) {
arr2[i] = sc.nextInt();
}
for (int x : T.Solution(arr1, arr2)) {
System.out.print(x + " ");
}
}
}
선생님 풀이
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;
public class Main3_1 {
public ArrayList<Integer> Solution(int n, int m, int[] a, int[] b) {
ArrayList<Integer> answer = new ArrayList<>();
int p1=0, p2=0;
while(p1<n && p2<m) {
if(a[p1]<b[p2]) answer.add(a[p1++]);
else answer.add(b[p2++]);
}
while(p1<n) answer.add(a[p1++]);
while(p2<m) answer.add(b[p2++]);
return answer;
}
public static void main(String[] args) {
Main3_1 T = new Main3_1();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int m = sc.nextInt();
int[] b = new int[m];
for (int i = 0; i < m; i++) {
b[i] = sc.nextInt();
}
for (int x : T.Solution(n, m, a, b)) {
System.out.print(x + " ");
}
}
}
결과
알게된 점
1. 배열 합치기 - System 클래스의 arraycopy 메서드
https://rookie-programmer.tistory.com/49
'Algorithm > Inflearn' 카테고리의 다른 글
[Inflearn] 자바 알고리즘 문제풀이 #03-02 2. 공통원소 구하기 (0) | 2022.12.14 |
---|---|
[Inflearn] 영리한 프로그래밍을 위한 알고리즘 - 기본적인 정렬 알고리즘 (0) | 2022.12.13 |
[Inflearn] 자바 알고리즘 문제풀이 #02-12 12. 멘토링 (0) | 2022.11.29 |
[Inflearn] 영리한 프로그래밍을 위한 알고리즘 - 순환 (Recursion) 의 응용 : 멱집합(powerset) (0) | 2022.11.29 |
[Inflearn] 자바 알고리즘 문제풀이 #02-11 11. 임시반장 정하기 (0) | 2022.11.28 |