문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

7024 : 두 정렬 리스트 합병

•시간제한: 2.000 S •메모리제한: 256 MB •제출: 1 •통과: 1 •만든사람: suakii

7024 : 두 정렬 리스트 합병

시간 2.000s · 메모리 256MB · 제출 1 · 정답 1

문제 설명

이미 오름차순으로 정렬되어 있는 두 개의 리스트 $A$와 $B$가 주어집니다.
두 리스트의 모든 원소를 합치되, 여전히 오름차순 정렬된 상태를 유지하는 새로운 리스트를 만드는 프로그램을 작성하십시오.

[제약 조건]
• 두 리스트 크기 $N, M$: $1 \le N, M \le 50{,}000$
• 각 원소: $-10^9 \le a_i \le 10^9$ (오름차순 정렬)

입력 설명

첫째 줄에 첫 번째 리스트의 크기 $N$과 두 번째 리스트의 크기 $M$이 공백으로 구분되어 주어집니다. ($1 \le N, M \le 50000$)
둘째 줄에 오름차순으로 정렬된 $N$개의 정수가 공백으로 구분되어 주어집니다.
셋째 줄에 오름차순으로 정렬된 $M$개의 정수가 공백으로 구분되어 주어집니다. 각 정수의 범위는 $-10^9$ 이상 $10^9$ 이하입니다.

출력 설명

합병 및 정렬이 완료된 $N + M$개의 정수를 공백으로 구분하여 한 줄에 출력합니다.

입력 예시
COPY
복사되었습니다!

3 5
1 3 5
2 4 6 7 8

출력 예시
COPY
복사되었습니다!

1 2 3 4 5 6 7 8

도움

이미 정렬된 두 배열을 합칠 때는 두 배열의 시작 위치를 가리키는 두 개의 포인터를 사용하는 두 포인터(Two Pointer) 알고리즘을 사용합니다. 각 단계에서 가리키는 값 중 작은 값을 새 배열에 넣고 포인터를 한 칸 전진시키면 $O(N + M)$의 시간에 효율적으로 정렬을 완료할 수 있습니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘