본문 바로가기

코딩테스트 with PYTHON

[python] 코딩테스트 대비 - 정렬된 리스트 합치기

문제)

 

답안코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import sys
#두리스트 더해서 sort() 하면 시간복잡도 nlog(n)-퀵소트 일경우
#정렬된 두 리스트 이기 때문에 앞에서 부터 하나씩 비교해 나가면 n번 반복으로 가능
#sys.stdin=open("input.txt", "r")
n=int(input())
a=list(map(int, input().split()))
m=int(input())
b=list(map(int, input().split()))
 
p1=p2=0#리스트 인덱스 가르키는 포인터 역할
c=[]#결과 리스트
 
while p1<and p2<m:#두 리스트 중 하나가 끝까지 도달할때 까지 반복
    if a[p1]<b[p2]:#b의 원소가 더 크면
        c.append(a[p1])#a 원소 삽입
        p1+=1#a의 다음 원소 가르킴
    else:#a 원소가 더 크면
        c.append(b[p2])
        p2+=1
if p1<n:#b리스트가 끝났다면
    c=c+a[p1:]#a뒷부분을 붙임
if p2<m:#a리스트가 끝났다면
    c=c+b[p2:]#b뒷부분을 붙임
    
for x in c:#형식에 맞게 출력
    print(x, end=' ')
 
cs