백준 11728 배열 합치기 / C++

이유참치·2025년 12월 15일

백준

목록 보기
149/249

문제 : 11728

풀이 point

정렬되어있는 두 배열이 주어진다. 그렇다면 두 배열의 요소들을 처음부터 비교하여 가장 작은애를 앞에두면서 진행하면 된다.

풀이 방법

투포인터 방식으로 A배열의 요소가 가장 작으면 값을 저장해놓고 A배열의 포인터를 뒤로 옮긴다. B배열의 요소가 그 다음으로 작으면 똑같이 한다.

만약 A배열의 포인터가 끝에 다달았다면 이제는 B배열의 요소로만 값을 채우면 된다.

//백준 11728, 배열 합치기
#include <iostream>

int A[1'000'001];
int B[1'000'001];

int main(){

    int N, M;

    std::cin >> N >> M;
    for(int i{0}; i<N; ++i) std::cin >> A[i];
    
    for(int i{0}; i<M; ++i) std::cin >> B[i];
    
    int Aidx{0}; int Bidx{0};
    for(int i{0}; i<N+M; ++i){
        if(Aidx == N) std::cout << B[Bidx++];
        else if(Bidx == M) std::cout << A[Aidx++];
        else if(A[Aidx] > B[Bidx]) std::cout << B[Bidx++];
        else std::cout << A[Aidx++];
        std::cout << ' ';
    }

    return 0;
}
profile
임아리 - 대학생

0개의 댓글