🌷🌼모여봐요 개발의숲🌷🌼
[JAVA/코딩테스트] 두 배열 합치기 본문
반응형
1. 내가 푼 답
import java.util.*;
import java.io.*;
public class Main {
public void solution(int[] array1, int[] array2) {
// 결과
int[] result = new int[array1.length + array2.length];
// array1의 0번째 배열부터 끝까지를 result의 0번째부터 복사
System.arraycopy(array1, 0, result, 0, array1.length);
// array2의 0번째 배열부터 끝까지를 result의 array1.length번째부터 복사
System.arraycopy(array2, 0, result, array1.length, array2.length);
// 배열 오름차순 정렬
Arrays.sort(result);
for(int i=0; i<result.length; i++) {
System.out.print(result[i] + " ");
}
}
public static void main(String args[]) {
Main main = new Main();
Scanner in= new Scanner(System.in);
int num = in.nextInt();
int[] array1 = new int[num];
for(int i=0; i<num; i++) {
array1[i] = in.nextInt();
}
num = in.nextInt();
int[] array2 = new int[num];
for(int i=0; i<num; i++) {
array2[i] = in.nextInt();
}
main.solution(array1, array2);
}
}
2. two pointers algorithm 사용
import java.util.*;
import java.io.*;
public class Main {
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]) {
// a[p1]를 add하고 그 후 p++이 실행됨(전위증감연산자)
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[]) {
Main main = new Main();
Scanner in= new Scanner(System.in);
int num = in.nextInt();
int[] array1 = new int[num];
for(int i=0; i<num; i++) {
array1[i] = in.nextInt();
}
int num2 = in.nextInt();
int[] array2 = new int[num2];
for(int i=0; i<num2; i++) {
array2[i] = in.nextInt();
}
for(int x: main.solution(num, num2, array1, array2)) {
System.out.print(x+ " ");
}
}
}
'개발 > 알고리즘 문제풀이 JAVA' 카테고리의 다른 글
[JAVA/코딩테스트] 최대 매출 (0) | 2021.05.13 |
---|---|
[JAVA/코딩테스트] 공통원소 구하기 (0) | 2021.05.12 |
[JAVA/코딩테스트] 멘토링 (0) | 2021.05.05 |
[JAVA/코딩테스트] 임시반장 (0) | 2021.05.04 |
[JAVA/코딩테스트] 봉우리 (0) | 2021.04.29 |
Comments