[백준] 11728번 배열 합치기

거북이·2023년 1월 3일
0

백준[실버5]

목록 보기
38/114
post-thumbnail

💡문제접근1(1m)

정말 간단한 방법으로 문제를 해결할 수 있었다.

💡코드1(메모리 : 186076KB, 시간 : 1528ms)

import sys

N, M = map(int, sys.stdin.readline().strip().split())
A = list(map(int, sys.stdin.readline().strip().split()))
B = list(map(int, sys.stdin.readline().strip().split()))
lst = sorted(A + B)
print(*lst)

💡문제접근2(30m)

알고리즘 분류 중 하나였던 투 포인터를 보고 이를 이용해서 코드를 작성했다.

💡코드2(메모리 : 184056KB, 시간 : 2068ms)

import sys
N, M = map(int, sys.stdin.readline().strip().split())
A = list(map(int, sys.stdin.readline().strip().split()))
B = list(map(int, sys.stdin.readline().strip().split()))

lst = []
p1 = p2 = 0
# 이 반복문을 모두 거쳤을 때 배열이 완전히 합해지지 않을 수도 있다.
while p1 < N and p2 < M:
    if A[p1] > B[p2]:
        lst.append(B[p2])
        p2 += 1
    else:
        lst.append(A[p1])
        p1 += 1

# 만약 첫 번째 배열에서 남는 원소가 발생한다면?
while p1 < N:
    lst.append(A[p1])
    p1 += 1

# 만약 두 번째 배열에서 남는 원소가 발생한다면?
while p2 < M:
    lst.append(B[p2])
    p2 += 1

print(*lst)

0개의 댓글