[JAVA] 두 배열 합치기(숫자배열, two pointer)
2021. 4. 28. 23:06
- 문제
오름차순으로 정렬된 두개의 숫자 배열을 오름차순으로 합치기
- 키포인트
two pointer를 사용 할 수 있느냐
- 풀이
package chapter3;
import java.util.ArrayList;
import java.util.Scanner;
public class 두배열합치기 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n1 = in.nextInt();
int[] arr1 = new int[n1];
for (int i = 0; i < n1; i++) {
arr1[i] = in.nextInt();
}
int n2 = in.nextInt();
int[] arr2 = new int[n2];
for (int i = 0; i < n2; i++) {
arr2[i] = in.nextInt();
}
for(int i : solution(arr1, arr2)) {
System.out.print(i + " ");
}
in.close();
}
public static ArrayList<Integer>solution(int[] arr1, int[] arr2) {
ArrayList<Integer> answer = new ArrayList<>();
int p1 =0; //arr1 담당 pointer
int p2 =0; // arr2 담당 pointer
while(p1 < arr1.length && p2 < arr2.length) {
if(arr1[p1] <arr2[p2]) {
answer.add(arr1[p1++]);
}else {
answer.add(arr2[p2++]);
}
} //여기까지 진행하면 배열이 더 긴쪽의 값은 덜 들어감
//남은 배열값 털어주기
while(p1 < arr1.length) answer.add(arr1[p1++]);
while(p2 < arr2.length) answer.add(arr2[p2++]);
return answer;
}
}
'skill > 알고리즘' 카테고리의 다른 글
[프로그래머스][위클리] 2주차 문제 in JAVA (0) | 2021.08.09 |
---|---|
[LeetCode] 121. Best Time to Buy and Sell Stock (0) | 2021.04.22 |
[JAVA] 회문문자열 (0) | 2021.04.13 |
[JAVA] 단어뒤집기 (StringBuilder.reverse) (0) | 2021.04.13 |
[Java] 문장 속 가장 긴 단어 찾기 (0) | 2021.04.12 |