https://velog.io/@jeonghens/%EB%B0%B1%EC%A4%80-11728
위의 문제에 대한 투 포인터 풀이는 아래와 같다.
먼저 각 배열에 대한 포인터(p_a, p_b)를 선언한다.
그리고 각 포인터가 가리키는 값을 비교하여,
더 작은 값을 정답 배열에 넣고,
해당 포인터의 값을 1만큼 증가시킨다.
둘 중 한 배열의 값이 정답 배열에 모두 들어갔다면,
남은 배열의 값은 정답 배열에 들어간 값보다 크면서 이미 정렬된 값이므로,
정답 배열 뒤에 더해주면 된다.
코드(정답)는 다음과 같다.
import sys
n, m = map(int, sys.stdin.readline().split())
a = list(map(int, sys.stdin.readline().split()))
b = list(map(int, sys.stdin.readline().split()))
# 배열 a, b를 합친 배열
result = []
# 배열 a, b에 대한 포인터
p_a, p_b = 0, 0
while p_a < len(a) and p_b < len(b):
if a[p_a] < b[p_b]:
result.append(a[p_a])
p_a += 1
else:
result.append(b[p_b])
p_b += 1
if p_a == len(a):
result += b[p_b:]
if p_b == len(b):
result += a[p_a:]
print(*result)