문제링크 : https://www.acmicpc.net/problem/11728
11728번: 배열 합치기
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거
www.acmicpc.net
접근 과정 :
- 문제 그대로 접근하려고 했다.
- 하나의 컬렉션으로 합쳐서 입력을 받지 않고, 배열 2개로 나눠서 입력을 받았다.
- 그리고 포인터를 각 배열에 하나씩 주고, A[i] 와 B[j] 를 비교해가면서 출력했다.
소스 코드 및 결과 :
package BOJ;
/*
배열 합치기
*/
import java.io.*;
import java.util.*;
public class BOJ11728 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int lenA = Integer.parseInt(st.nextToken());
int lenB = Integer.parseInt(st.nextToken());
int[] A = new int[lenA];
int[] B = new int[lenB];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < lenA; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < lenB; i++) {
B[i] = Integer.parseInt(st.nextToken());
}
StringBuilder sb = new StringBuilder();
int a = 0;
int b = 0;
while (a < lenA || b < lenB) {
if (a == lenA) {
sb.append(B[b]).append(" ");
b++;
continue;
}
if (b == lenB) {
sb.append(A[a]).append(" ");
a++;
continue;
}
if (A[a] <= B[b]) {
sb.append(A[a]).append(" ");
a++;
} else {
sb.append(B[b]).append(" ");
b++;
}
}
System.out.println(sb.toString().trim());
}
}
'Algorithm' 카테고리의 다른 글
[백준 Gold 3] 14890 경사로 - Java (0) | 2022.01.12 |
---|---|
[백준 Gold 4] 4179 불! - Java (0) | 2022.01.12 |
[백준 Silver 4] 1244 스위치 켜고 끄기 - Java (0) | 2022.01.12 |
[백준 Gold 1] 2357 최솟값과 최댓값 - Java (0) | 2022.01.10 |
[백준 Gold 1] 10868 최솟값 - Java (0) | 2022.01.10 |