두 리스트 합치기
오름차순으로 정렬이 된 두 리스트가 주어지면 두 리스트를 오름차순으로 합쳐 출력하는 프로
그램을 작성하세요.
입력설명
첫 번째 줄에 첫 번째 리스트의 크기 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
✔ 정답
import sys
#sys.stdin=open("input.txt","rt")
n=int(input())
a=list(map(int,input().split()))
m=int(input())
b=list(map(int,input().split()))
#포인터로 사용할 p1,p2
p1=p2=0
c=[]
#각 포인터가 각 리스트 길이보다 작을 때 까지만
while p1<n and p2<m:
#a리스트의 포인트인덱스 값이 b리스트의 포인트 인덱스 값보다 작거나 같으면
if a[p1]<=b[p2]:
#a리스트의 포인트 인덱스 값으로 추가
c.append(a[p1])
#a의 인덱스 값 증가
p1+=1
else: #b리스트의 포인트 인덱스값이 더 큰경우 b 포인트 인덱스 갑승로 추가
c.append(b[p2])
#b의 인덱스 값 증가
p2+=1
#만약 a의 포인터가 길이보다 작았던거라면
if p1<n:
#a의 남은 리스트 c에 연결
c=c+a[p1:]
#만약 a의 포인터가 길이보다 작았던거라면
if p2<m:
#b의 남은 리스트 c에 연결
c=c+b[p2:]
for i in c:
print(i,end=' ')
📝끄적끄적
인덱스를 선택하기 위해서 포인터를 만들어서 사용하는 방법이 있구나!
💖 참고
리스트 연결
a+b
'알고리즘 > Python' 카테고리의 다른 글
[파이썬] 스토쿠 검사 (0) | 2021.08.30 |
---|---|
[파이썬] 수들의 합 (0) | 2021.08.30 |
[파이썬] 카드 역배치 (0) | 2021.08.27 |
[파이썬] 숫자만 추출 (0) | 2021.08.27 |
[파이썬] 회문 문자열 검사 (0) | 2021.08.27 |