새소식

Computer Science/코딩테스트 문제 풀이

[예제] [파이썬] [탐색] 두 리스트 합치기

  • -

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


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

def solution(arr1,arr2):
    res=[]
    p1,p2=0,0
    while p1<len(arr1) and p2<len(arr2):
        if arr1[p1]<arr2[p2]:		# arr1의 숫자가 더 작으면 
            res.append(arr1[p1])
            p1+=1					# arr1의 다음 숫자 보기 위해 
        else:						# arr2의 숫자가 더 작으면 
            res.append(arr2[p2])
            p2+=1
            
    if p1<len(arr1):			# while문을 통과하고 아직 남은게 있다면 
        res+=arr1[p1:]			# 그대로 이어 붙이기 
    if p2<len(arr2):
        res+=arr2[p2:]
    return res
    

if __name__=="__main__":
    N=int(input())
    arr1=list(map(int, input().split()))
    M=int(input())
    arr2=list(map(int, input().split()))
    
    print(solution(arr1,arr2))

 


 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.