728x90
문제
정렬되어있는 두 배열 A와 B가 주어진다.
두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/11728
입력
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)
둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다.
배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.
출력
첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.
예제
# input
2 2
3 5
2 9
# output
2 3 5 9
# input
2 1
4 7
1
# output
1 4 7
문제 풀이
import sys
input = sys.stdin.readline
# 입력 받기
N, M = map(int, input().split())
# 정답 변수 초기화
answer = []
# 두 개의 배열을 입력받아 정답 리스트에 추가
for _ in range(2):
answer += list(map(int, input().split()))
# 오름차순 정렬
answer.sort()
print(*answer)
import sys
import heapq
input = sys.stdin.readline
# 입력 받기
N, M = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
# 두 배열을 합쳐서 새로운 리스트 answer 초기화
answer = A + B
# answer를 힙으로 변환
heapq.heapify(answer)
# 힙에서 원소 하나씩 출력
for i in range(N+M):
print(heapq.heappop(answer), end=' ')
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90