[ BOJ 11728 ] 배열 합치기(Python)

uoayop·2021년 6월 1일
0

알고리즘 문제

목록 보기
83/103
post-thumbnail

문제

https://www.acmicpc.net/problem/11728

정렬된 두 배열을 합치면 된다.
나는 쩜,, 인덱스에 약한 듯하다.


문제 풀이

0. 입력 받기

n, m = map(int, input().rsplit())

a = list(map(int, input().rsplit()))
b = list(map(int, input().rsplit()))

1. 포인터를 이동시키면서 최대한 합치기

  • l은 a 배열을 가리키는 인덱스, r은 b 배열을 가리키는 인덱스다.
l, r = 0, 0
result = []
while l < n and r < m:
    if a[l] < b[r]:
        result.append(a[l])
        l += 1
    else:
        result.append(b[r])
        r += 1

2. 남은 배열 합치기

  • a 배열과 b 배열의 길이가 같지 않으면 1번의 과정이 끝난 뒤 남는 배열이 생길 수 있다.
while l < n:
    result.append(a[l])
    l += 1

while r < m:
    result.append(b[r])
    r += 1

코드

import sys
input = sys.stdin.readline

n, m = map(int, input().rsplit())

a = list(map(int, input().rsplit()))
b = list(map(int, input().rsplit()))

l, r = 0, 0
result = []
while l < n and r < m:
    if a[l] < b[r]:
        result.append(a[l])
        l += 1
    else:
        result.append(b[r])
        r += 1
    

while l < n:
    result.append(a[l])
    l += 1

while r < m:
    result.append(b[r])
    r += 1

print(" ".join(map(str, result)))
profile
slow and steady wins the race 🐢

0개의 댓글