![[투 포인터] 백준 11728번 배열 합치기 - Java](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjLpYE%2FbtsM9YOUVRU%2F8dxKhTykAjcXkeuP52ypLk%2Fimg.png)
[투 포인터] 백준 11728번 배열 합치기 - Java백준/투 포인터2025. 4. 5. 20:21
Table of Contents
https://www.acmicpc.net/problem/11728
✅ 문제
🔑 풀이
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] A = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
int[] B = new int[M];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < M; i++) {
B[i] = Integer.parseInt(st.nextToken());
}
int pointer_A = 0;
int pointer_B = 0;
while (pointer_A < N && pointer_B < M) { // A,B 배열을 비교해서 작은 수 출력해가기
if (A[pointer_A] > B[pointer_B]) { // A 배열에 있는 수가 B 배열에 있는 수보다 클 때
bw.write(B[pointer_B] + " "); // B 배열에 있는 수 출력
pointer_B++;
} else {
bw.write(A[pointer_A] + " ");
pointer_A++;
}
}
if (pointer_A == N) { // A 배열이 출력되었을 때, B 배열 나머지 출력하기
for (int i = pointer_B; i < M; i++) {
bw.write(B[i] + " ");
}
}
if (pointer_B == M) { // B 배열이 출력되었을 때, A 배열 나머지 출력하기
for (int i = pointer_A; i < N; i++) {
bw.write(A[i] + " ");
}
}
bw.flush();
bw.close();
}
}
풀이 제출 후 시간 초과가 나서, 빠르게 출력해주는 BufferedWriter를 사용했다.
'백준 > 투 포인터' 카테고리의 다른 글
[투 포인터] 백준 1940번 주몽 - Java (0) | 2025.03.15 |
---|---|
[투 포인터] 백준 3273번 두 수의 합 - Java (0) | 2025.03.14 |
@킴준현 :: 차근차근 꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!