병합 (Merge)

면접 대비

시간 제한2초메모리 제한512 MB

요약
정렬된 두 수열을 주어진 규칙으로 합친다. 맨 앞 원소가 같으면 A에서 먼저 꺼내 하나의 수열로 만든다.
난이도

쉬움10점 중 2점

유형
투 포인터, 구현, 배열, 정렬
정답자
아직 제출이 없습니다

문제

길이가 N인 양의 정수열 A=(A1, A2, ..., AN)과 길이가 M인 양의 정수열 B=(B1, B2, ..., BM)가 주어진다. 두 수열은 모두 비감소 수열이다. 즉, A1 ≦ A2 ≦ … ≦ AN, B1 ≦ B2 ≦ … ≦ BM을 만족한다.

다음 알고리즘으로 두 수열에서 길이가 N+M인 양의 정수열 C=(C1, C2, ..., CN+M)를 생성한다.

  1. 처음에 C는 비어 있다.
  2. A와 B가 모두 비어 있으면 종료한다.
  3. A와 B 중 하나만 비어 있으면 비어 있지 않은 수열을 t로 둔다. 둘 다 비어 있지 않으면 맨 앞 원소가 더 작은 수열을 t로 둔다. 단, A와 B의 맨 앞 원소가 같은 값이면 A를 t로 둔다.
  4. t의 맨 앞 원소를 C의 맨 뒤에 추가한다.
  5. t의 맨 앞 원소를 삭제한다.
  6. 2번으로 돌아간다.

비감소 양의 정수열 A, B가 주어졌을 때, 이 알고리즘으로 생성되는 양의 정수열 C를 출력하는 프로그램을 작성하시오.

입력

입력은 다음 형식으로 표준 입력에서 주어진다.

N M
A1 A2 … AN
B1 B2 … BM

출력

표준 출력에 N + M줄을 출력한다.

k번째 줄 (1 ≦ k ≦ N + M)에는 Ck를 출력한다.

제한

  • 1 ≦ N ≦ 500.
  • 1 ≦ M ≦ 500.
  • 1 ≦ A1 ≦ A2 ≦ … ≦ AN ≦ 2000.
  • 1 ≦ B1 ≦ B2 ≦ … ≦ BM ≦ 2000.

예제2

  1. 예제 1

    입력
    2 1
    1 2
    2
    
    예상 출력
    1
    2
    2
    
  2. 예제 2

    입력
    3 8
    1 3 8
    3 3 4 5 6 7 8 9
    
    예상 출력
    1
    3
    3
    3
    4
    5
    6
    7
    8
    8
    9