[Python] 백준 11728 - 배열 합치기

2022. 6. 27. 22:34알고리즘/문제풀이

[Python] 백준 11728 - 배열 합치기

 

문제 출처 : https://www.acmicpc.net/problem/11728

 

11728번: 배열 합치기

첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거

www.acmicpc.net

문제풀이

두 개의 방법을 가져왔다. 하나는 기존 파이썬의 기능을 사용한 단순 풀이다.

다른 하나는 힙 큐를 활용한 풀이이다. 힙 큐의 경우 처음에는 정렬을 할 수 있다는 점에서 사용을 했지만 생각처럼 들어가는 순서에 맞춰서 정렬이 되지 않아 tmp 임시 리스트를 만들어서 한번 heapq로 사용 후 pop으로 꺼내면서 res 리스트에 추가하는 방법으로 코드를 작성하였다.

 

import heapq

n, m = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))

# res = A + B
# res.sort()

for i in res:
    print(i, end = " ")

 

import heapq

n, m = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))

for i in B:
    A.append(i)

tmp = []

res = []

for i in A:
    heapq.heappush(tmp, i)

for _ in range(len(tmp)):
    res.append(heapq.heappop(tmp))

for i in res:
    print(i, end = " ")

 

정리

 

힙큐(heapq)에 대해 아직 잘 모르고 있다는 것을 알았다. 이 말은 아직 자료구조가 미숙하다는 말이랑 같다고 생각을 하였다. 자료구조에 대해 좀 더 시간을 들이고 공부해야겠다.