[Algorithm] 두 리스트 합치기

myeonji·2022년 1월 19일
0

Algorithm

목록 보기
6/89

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

<내 답안>

totlist = []
for i in range(2):
    n = int(input())
    list1 = list(map(int, input().split()))
    for i in list1:
        totlist.append(i)

totlist.sort()
for i in totlist:
    print(i, end=' ')

두 개 리스트를 합치고 sort()를 이용하면 돼서 너무 간단하길래 sort()를 이용하는게 아닌가..? 싶었다.
역시나 아니였다. sort()는 nlogn번 인데 n번만으로 더 효율적으로 코드를 작성할 수 있다.

<모범답안>

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

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

c = []
p1 = p2 = 0

while p1<n and p2<m:
    if a[p1]<=b[p2]:
        c.append(a[p1])
        p1+=1
    else:
        c.append(b[p2])
        p2+=1

if p1<n:
    c = c + a[p1:]  # append로 합치면 리스트 안의 리스트가 됨
if p2<m:
    c = c + b[p2:]

for i in c:
    print(i, end=' ')


길이가 더 작은 리스트까지만 반복문이 돌고,
남은 리스트는 반복문을 나와서 슬라이싱으로 남은 인덱스를 한번에 합치면 된다. 이 부분에서 나는 append로 했는데 그러다보니 리스트 안의 리스트가 출력됐다. 해설 보고 해결 방법을 찾았다 ㅠㅠ

0개의 댓글