반응형
문제
정렬되어있는 두 배열 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출력시 틀림 []형태로 출력되기 때문인듯
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 1106 호텔 (0) | 2022.05.11 |
---|---|
[python/파이썬] 백준 20053 최소, 최대 2 (0) | 2022.05.10 |
[python/파이썬] 백준 3029 경고 (0) | 2022.05.06 |
[python/파이썬] 백준 11660 구간 합 구하기 5 (0) | 2022.05.06 |
[python/파이썬] 백준 2294 동전 2 (0) | 2022.05.03 |