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

 

▣ 입력설명
첫 번째 줄에 첫 번째 리스트의 크기 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

 

풀이

>> while문을 이용해서 false 전까지 반복문 돌려주기

>> while문 돌다가 남은 자료형 찾아서 잘린 부분부터 문자열 슬라이스(arrA[ia:]) 해서 리스트 합쳐주기

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
import sys
sys.stdin=open("input.txt""r")
= int(input())
arrA = list(map(int, input().split()))
= int(input())
arrB = list(map(int, input().split()))
 
sortList = []
ia = ib = 0
 
while ia < n and ib < m:                #하나라도 인덱스가 n, m에 도달 전까지 반복, 하나라도 도달시 false로 반복문 멈춤
    if arrA[ia] <= arrB[ib]:            #arrA보다 arrB가 더 크면
       sortList.append(arrA[ia])        #arrA를 sortList에 추가
       ia+=1
    else:
        sortList.append(arrB[ib])
        ib+=1
#남은 자료형 찾음                      #n, m이 하나의 자료형만 처리 다 하고멈추면
if ia < n:                              #n까지 도달 못해서 arrA를 다 못읽음
    sortList = sortList + arrA[ia:]     #arrA[ia]부터 끝까지 붙여줌
if ib < m:
    sortList = sortList + arrB[ib:]
print(sortList)
 
for i in sortList:
    print(i, end=" ")
 
cs
탐색&시뮬레이션(string, 1차원, 2차원 리스트 탐색 )_4_두 리스트 합치기