백준

[백준] 11728번 배열 합치기 (java)

해랑쓰 2021. 4. 28. 17:36
728x90
반응형

www.acmicpc.net/problem/11728

 

11728번: 배열 합치기

첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거

www.acmicpc.net

병합 정렬을 구현하는 문제이다. (재귀 없이 간단하게) 

 

두 배열을 입력받아 정렬한 후 더 작은 값을 먼저 결과값에 넣어주면 된다.

 

알고리즘은 같은데 마지막에 결과배열의 값을 n번 for문 돌며 출력했더니 에러가 나더라.

 

stringbuilder로 문자열로 만들어서 한 번에 출력했더니 통과됐다

package algo0428;

import java.util.Arrays;
import java.util.Scanner;


public class B_11728_배열합치기_Main {
	static int n,m;
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		n=sc.nextInt();
		m=sc.nextInt();
		int[] a=new int[n];
		int[] b=new int[m];
		for (int i = 0; i < n; i++) {
			a[i]=sc.nextInt();
		}
		for (int i = 0; i < m; i++) {
			b[i]=sc.nextInt();
		}
		StringBuilder sb=new StringBuilder();
		Arrays.sort(a);
		Arrays.sort(b);
		int i=0;
		int j=0;
		int k=0;
		while(i<n && j<m) {
			if(a[i]<b[j]) {
				sb.append(a[i++]+" ");
			}else {
				sb.append(b[j++]+" ");
			}
		}
		
		while(i<n) {
			sb.append(a[i++]+" ");
		}
		while(j<m) {
			sb.append(b[j++]+" ");
		}
		
		System.out.println(sb.toString());
		
	}
}

 

728x90
반응형