[알각코] 인프런 3-4 두 리스트 합치기

숫자만 추출

문제 정보는 인프런의 파이썬 알고리즘 문제풀이 코딩테스트에 있습니다.

문제풀이

# 내가 도전해본 문제풀이!

n = int(input())
a = map(int, input().split())
m = int(input())
b = map(int, input().split())

tmp = []
for x in a:
  tmp.push(x)

for x in b:
  tmp.push(x)

print(sorted(tmp))

# for i in range(n+m):
#   tmp.push(a[i])
n = int(input())
a = map(int, input().split())
m = int(input())
b = map(int, input().split())

p1 = p2 = 0
c = []

while p1 < n and p2 < m:
  if a[p1] <= b[p2]:
    c.append(a[p1])
    p1 += 1
  else:
    c.append(b[p2])
  
if p1 < n:
  c = c + a[p1:]
if p2 < m:
  c = c + b[p2:]

for x in c:
  print(x, end=' ')

sort() 함수를 사용할 경우 nlogn만큼의 속도가 걸린다.

문제에서는 이미 두 리스트가 각각 오름차순 순으로 정리가 되어있기 때문에, 해당 리스트를 잘 활용하면 n 속도가 걸리도록 할 수 있다.

리스트에서 현재 원소를 가르키고 있는 변수를 지정하여 각 리스트에서 크기비교를 해서 끝까지 돌지 않은 리스트를 끝에 합쳐주기