정렬되어있는 두 배열 A와 B가 주어질 때, 두 배열을 합친 다음 정렬해서 출력하는 문제.
배열 A의 인덱스를 가리키는 포인터와 배열 B의 인덱스를 가리키는 포인터를 둔다. 각 포인터가 가리키는 배열 값을 서로 비교해서 작은 값을 선택하여 출력한다. 이후 출력된 값을 가리키는 포인터가 다음 인덱스를 가리킬 수 있도록한다. 각 배열안의 모든 값들이 출력될 때 까지 반복한다. 이것이 가능한 이유는 모든 배열이 이미 정렬이 되어있기 때문이다.
import sys
n, m = map(int, sys.stdin.readline().rsplit())
A = list(map(int, sys.stdin.readline().rsplit()))
B = list(map(int, sys.stdin.readline().rsplit()))
ap, bp = 0, 0
while ap < n or bp < m:
if ap == n:
for i in range(bp, m): print(B[i], end=' ')
bp = m
elif bp == m:
for i in range(ap, n): print(A[i], end=' ')
ap = n
else:
if A[ap] < B[bp]:
print(A[ap], end=' ')
ap += 1
else:
print(B[bp], end=' ')
bp += 1