UpDown Dev Story
알고리즘 연습 - 두 배열 합치기 본문
아래 강의를 보면서 연습하고 기록하고 있습니다
문제
강사님이 푼 답
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = kb.nextInt();
}
int m = kb.nextInt();
int[] b = new int[m];
for (int i = 0; i < m; i++) {
b[i] = kb.nextInt();
}
ArrayList<Integer> answer = new ArrayList<>();
int p1 = 0, p2 = 0; // 두개의 포인터를 선언
while (p1 < n && p2 < m) { // 두개의 포인터중 길이가 넘칠경우 정지하는 루프 시작
if (a[p1] < b[p2]) // p1 포인터가 가리키는 값이 더 작으면
answer.add(a[p1++]);
else
answer.add(b[p2++]);
}
while (p1 < n) // p1에 남아있는 값들을 answer에 추가
answer.add(a[p1++]);
while (p2 < m) // p2에 남아있는 값들을 answer에 추가
answer.add(b[p2++]);
for (int integer : answer) {
System.out.print(integer + " ");
}
}
}
'Algorithm' 카테고리의 다른 글
알고리즘 연습 - 학급회장(HashMap) (0) | 2021.06.23 |
---|---|
알고리즘 연습 - 공통원소구하기( Two Pointers ) (0) | 2021.06.23 |
알고리즘 연습 - 봉우리 (0) | 2021.06.03 |
알고리즘 연습 - 격자판 최대합 (0) | 2021.05.31 |
알고리즘 연습 - 등수구하기 (0) | 2021.05.26 |
Comments