오름차순으로 정렬이 된 두 리스트가 주어지면 두 리스트를 오름차순으로 합쳐 출력하는 프로그램을 작성하세요.
▣ 입력설명
첫 번째 줄에 첫 번째 리스트의 크기 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")
n = int(input())
arrA = list(map(int, input().split()))
m = 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차원 리스트 탐색 )_7_사과나무(다이아몬드) (0) | 2021.08.06 |
---|---|
탐색&시뮬레이션(string, 1차원, 2차원 리스트 탐색 )_6_격자판 최대합 (0) | 2021.08.04 |
탐색&시뮬레이션(string, 1차원, 2차원 리스트 탐색 )_3_카드 역배치 (0) | 2021.08.01 |
탐색&시뮬레이션(string, 1차원, 2차원 리스트 탐색 )_2_숫자만 추출 (0) | 2021.07.29 |
탐색&시뮬레이션(string, 1차원, 2차원 리스트 탐색 )_1_회문 문자열 검사 (0) | 2021.07.29 |
탐색&시뮬레이션(string, 1차원, 2차원 리스트 탐색 )_4_두 리스트 합치기