관리 메뉴

커리까지

[백준] 11728번 배열 합치기 파이썬 본문

알고리즘/풀이

[백준] 11728번 배열 합치기 파이썬

목표는 커리 2022. 2. 23. 00:51
728x90
SMALL

문제

정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)

둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.

출력

첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.

예제 입력 1

2 2
3 5
2 9

예제 출력 1

2 3 5 9

예제 입력 2

2 1
4 7
1

예제 출력 2

1 4 7

예제 입력 3

4 3
2 3 5 9
1 4 7

예제 출력 3

1 2 3 4 5 7 9

문제풀이

  • 10의 9승이라서 리스트로 하면 시간 초과날 것 같았다.
  • 그래서 heapq를 사용해서 우선순위 큐를 사용했다.
  • 그러나 리스트가 오히려 시간이 적게 나왔다....
    • 왜 그런지 모르겠다...
    • 리스트는 o(n)이고 힙은 로그인데...

제출답안

  • heapq
import sys, heapq
input = sys.stdin.readline

def solution():
    answer = []
    n, m = map(int, input().split())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    for i in a:
        heapq.heappush(answer, i)
    for k in b:
        heapq.heappush(answer, k)
    for i in range(len(answer)):
        print(heapq.heappop(answer), end=' ')
    return answer

solution()
  • 리스트
import sys, heapq
input = sys.stdin.readline

def solution():
    n, m = map(int, input().split())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    answer = sorted(a + b)
    print(*answer)
solution()
728x90
LIST
Comments