Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

UpDown Dev Story

알고리즘 연습 - 두 배열 합치기 본문

Algorithm

알고리즘 연습 - 두 배열 합치기

updown 2021. 6. 22. 09:02

아래 강의를 보면서 연습하고 기록하고 있습니다

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 

문제

강사님이 푼 답

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner kb = new Scanner(System.in);
		int n = kb.nextInt();
		int[] a = new int[n];
		for (int i = 0; i < n; i++) {
			a[i] = kb.nextInt();
		}
		int m = kb.nextInt();
		int[] b = new int[m];
		for (int i = 0; i < m; i++) {
			b[i] = kb.nextInt();
		}

		ArrayList<Integer> answer = new ArrayList<>();
		int p1 = 0, p2 = 0; // 두개의 포인터를 선언
		while (p1 < n && p2 < m) { // 두개의 포인터중 길이가 넘칠경우 정지하는 루프 시작
			if (a[p1] < b[p2]) // p1 포인터가 가리키는 값이 더 작으면
				answer.add(a[p1++]);
			else
				answer.add(b[p2++]);
		}

		while (p1 < n) // p1에 남아있는 값들을 answer에 추가
			answer.add(a[p1++]);
		while (p2 < m) // p2에 남아있는 값들을 answer에 추가
			answer.add(b[p2++]);

		for (int integer : answer) {
			System.out.print(integer + " ");
		}
	}
}

Comments