알고리즘/구현,시뮬
BOJ - 11728 ) 배열 합치기
개발자가될수있을까?
2021. 7. 29. 22:08


https://www.acmicpc.net/problem/11728
11728번: 배열 합치기
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거
www.acmicpc.net
정렬된 두 배열이 문제 조건에 있다면, 투포인터 알고리즘을 의심해봐야 한다.
배열이정렬되어있으므로 앞쪽부터 두 배열을 비교하여 하나의 정렬된 배열을 만들어주자
같으면, 어느쪽을 먼저넣어도 상관없음이 보장된다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 배열합치기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int arrN[] = new int[n];
int arrM[] = new int[m];
st = new StringTokenizer(br.readLine());
for(int i=0;i<n;i++) {arrN[i] = Integer.parseInt(st.nextToken());}
st = new StringTokenizer(br.readLine());
for(int i=0;i<m;i++) {arrM[i] = Integer.parseInt(st.nextToken());}
StringBuilder sb = new StringBuilder();
int Nindex = 0;
int Mindex = 0;
while(Nindex + Mindex < m+n) {
if(Nindex ==n) {
sb.append(arrM[Mindex++]+" ");
} else if(Mindex==m) {
sb.append(arrN[Nindex++]+" ");
} else {
if(arrM[Mindex] > arrN[Nindex]) {
sb.append(arrN[Nindex++]+" ");
} else {
sb.append(arrM[Mindex++]+" ");
}
}
}
System.out.println(sb.toString());
}
}
