본문 바로가기

Algorithm/Python

014 - 두 리스트 합치기

오름차순으로 정렬이 된 두 리스트가 주어지면 두 리스트를 오름차순으로 합쳐 출력하는 프로 그램을 작성하세요.

입력설명
첫 번째 줄에 첫 번째 리스트의 크기 N(1<=N<=100)이 주어집니다. 두 번째 줄에 N개의 리스트 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 리스트의 크기 M(1<=M<=100)이 주어집니다. 네 번째 줄에 M개의 리스트 원소가 오름차순으로 주어집니다.
각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.

 

출력설명
오름차순으로 정렬된 리스트를 출력합니다.

 

입력예제 1

3
1 3 5
5

2 3 6 7 9

 

출력예제 1

1 2 3 3 5 6 7 9

 

 

# sort 를 사용하면 시간이 많이 걸린다(N log N), 두개의 리스트가 이미 정렬된 상태이므로
# 이점을 유의하여 아래처럼 처리할것.

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

acnt = 0
bcnt = 0
c = []
while acnt < n1 and bcnt < n2:
    if a[acnt] <= b[bcnt]:
        c.append(a[acnt])
        acnt += 1
    else:
        c.append(b[bcnt])
        bcnt += 1
# 2개의 리스트중에서 남은 부분은 아래 로직으로 처리
if acnt < n1:
    c = c+a[acnt:]
else:
    c = c+b[bcnt:]
print(*c)

'Algorithm > Python' 카테고리의 다른 글

016 - 격자판 최대합  (0) 2023.08.07
015 - 수들의 합  (0) 2023.08.04
013 - 카드 역배치  (0) 2023.08.03
012 - 숫자만 추출  (0) 2023.08.03
011 - 회문 문자열 검사  (0) 2023.08.03