본문 바로가기

알고리즘/python

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

반응형

문제

정렬되어있는 두 배열 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

 

 

[소스 코드]

 

그냥 합치고 정렬하면 더 쉽고 간단하게 풀리는 문제이지만 투포인터 카테고리에 있던 문제기에 투포인터로 풀어봤다.

n, m = map(int, input().split())

a = list(map(int, input().split()))
b = list(map(int, input().split()))

result = []

a_p = 0
b_p = 0
for i in range(n+m):
    if a_p == n:
        result.append(b[b_p])
        b_p += 1
    elif b_p == m:
        result.append(a[a_p])
        a_p += 1
    else:
        if a[a_p] > b[b_p]:
            result.append(b[b_p])
            b_p += 1
        else:
            result.append(a[a_p])
            a_p += 1

print(*result) #그냥 result출력시 틀림 []형태로 출력되기 때문인듯
반응형