공부공간

BOJ - 11728 ) 배열 합치기 본문

알고리즘/구현,시뮬

BOJ - 11728 ) 배열 합치기

개발자가될수있을까? 2021. 7. 29. 22:08

 


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

 

11728번: 배열 합치기

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

www.acmicpc.net

 


정렬된 두 배열이 문제 조건에 있다면, 투포인터 알고리즘을 의심해봐야 한다.

 

배열이정렬되어있으므로 앞쪽부터 두 배열을 비교하여 하나의 정렬된 배열을 만들어주자

 

같으면, 어느쪽을 먼저넣어도 상관없음이 보장된다.

 

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class 배열합치기 {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		int arrN[] = new int[n];
		int arrM[] = new int[m];
		st = new StringTokenizer(br.readLine());
		for(int i=0;i<n;i++) {arrN[i] = Integer.parseInt(st.nextToken());}
		st = new StringTokenizer(br.readLine());
		for(int i=0;i<m;i++) {arrM[i] = Integer.parseInt(st.nextToken());}
		StringBuilder sb = new StringBuilder();
		
		int Nindex = 0;
		int Mindex = 0;
		
		while(Nindex + Mindex < m+n) {
			if(Nindex ==n) {
				sb.append(arrM[Mindex++]+" ");
			} else if(Mindex==m) {
				sb.append(arrN[Nindex++]+" ");
			} else {
				if(arrM[Mindex] > arrN[Nindex]) {
					sb.append(arrN[Nindex++]+" ");
				} else {
					sb.append(arrM[Mindex++]+" ");
				}
			}
		}
		System.out.println(sb.toString());
			
	}

}

'알고리즘 > 구현,시뮬' 카테고리의 다른 글

BOJ - 1120 ) 문자열  (0) 2021.09.13
BOJ - 2417 ) 정수제곱근  (0) 2021.08.01
프로그래머스 ) 음양더하기  (0) 2021.07.19
BOJ - 1655 ) 가운데를 말해요  (0) 2021.06.09
BOJ - 2170 ) 선 긋기  (0) 2021.06.02
Comments