🌷🌼모여봐요 개발의숲🌷🌼

[JAVA/코딩테스트] 두 배열 합치기 본문

개발/알고리즘 문제풀이 JAVA

[JAVA/코딩테스트] 두 배열 합치기

요일이 2021. 5. 11. 00:43
반응형

1. 내가 푼 답

import java.util.*;
import java.io.*;

public class Main {
	
	public void solution(int[] array1, int[] array2) {
		// 결과
		int[] result = new int[array1.length + array2.length];
		// array1의 0번째 배열부터 끝까지를 result의 0번째부터 복사
		System.arraycopy(array1, 0, result, 0, array1.length);
        // array2의 0번째 배열부터 끝까지를 result의 array1.length번째부터 복사
		System.arraycopy(array2, 0, result, array1.length, array2.length);
		
        // 배열 오름차순 정렬
		Arrays.sort(result);
		
		for(int i=0; i<result.length; i++) {
			System.out.print(result[i] + " ");	
		}
		
	}

	public static void main(String args[]) {
        Main main = new Main();
		Scanner in= new Scanner(System.in);
        int num = in.nextInt();
        int[] array1 = new int[num];
        for(int i=0; i<num; i++) {
        	array1[i] = in.nextInt();
        }
        num = in.nextInt();
        int[] array2 = new int[num];
        for(int i=0; i<num; i++) {
        	array2[i] = in.nextInt();
        }
        main.solution(array1, array2);
    }

}

2. two pointers algorithm 사용

import java.util.*;
import java.io.*;

public class Main {
	
	public ArrayList<Integer> solution(int n, int m, int[] a, int[] b) {
		
		ArrayList<Integer> answer = new ArrayList<>();
		
		int p1=0, p2=0;
		
		while(p1<n && p2<m) {
			if(a[p1]<b[p2]) {
				// a[p1]를 add하고 그 후 p++이 실행됨(전위증감연산자)
				answer.add(a[p1++]);
			}else {
				answer.add(b[p2++]);
			}
		}
		while(p1<n) {
			answer.add(a[p1++]);
		}
		while(p2<m) {
			answer.add(b[p2++]);
		}
		return answer;
	}

	public static void main(String args[]) {
        Main main = new Main();
		Scanner in= new Scanner(System.in);
        int num = in.nextInt();
        int[] array1 = new int[num];
        for(int i=0; i<num; i++) {
        	array1[i] = in.nextInt();
        }
        int num2 = in.nextInt();
        int[] array2 = new int[num2];
        for(int i=0; i<num2; i++) {
        	array2[i] = in.nextInt();
        }
        for(int x: main.solution(num, num2, array1, array2)) {
        	System.out.print(x+ " ");
        }
        
    }

}
Comments