[백준 11728] 배열 합치기

알고리즘 저장소·2021년 7월 8일
0

백준

목록 보기
23/41
post-custom-banner

1. 요약

정렬되어있는 두 배열 A와 B가 주어질 때, 두 배열을 합친 다음 정렬해서 출력하는 문제.

2. 아이디어

배열 A의 인덱스를 가리키는 포인터와 배열 B의 인덱스를 가리키는 포인터를 둔다. 각 포인터가 가리키는 배열 값을 서로 비교해서 작은 값을 선택하여 출력한다. 이후 출력된 값을 가리키는 포인터가 다음 인덱스를 가리킬 수 있도록한다. 각 배열안의 모든 값들이 출력될 때 까지 반복한다. 이것이 가능한 이유는 모든 배열이 이미 정렬이 되어있기 때문이다.


3. 코드

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
post-custom-banner

0개의 댓글